Heim  >  Artikel  >  Backend-Entwicklung  >  Implementierung einer Methode zur Berechnung des ID-Karten-Verifizierungscodes basierend auf PHP

Implementierung einer Methode zur Berechnung des ID-Karten-Verifizierungscodes basierend auf PHP

墨辰丷
墨辰丷Original
2018-06-01 15:45:552001Durchsuche

In diesem Artikel erfahren Sie, wie Sie mithilfe der PHP-Sprache den ID-Karten-Verifizierungscode implementieren, um festzustellen, ob die ID-Nummer des Benutzers korrekt ist.

Die Bedeutung jeder Ziffer des chinesischen (Festland-)Bürgers ID-Nummer wurde in vielen Artikeln im Internet vorgestellt, daher werde ich hier nicht näher darauf eingehen. Die letzte Ziffer der ID-Nummer ist der Prüfcode, der aus den ersten 17 Ziffern berechnet wird. Der Algorithmus sieht ungefähr wie folgt aus: Multiplizieren Sie jede Zahl in den ersten 17 Ziffern mit einer Reihe von Gewichtungsfaktoren, berechnen Sie dann die Summe dieser Produkte Modulo 11 als Seriennummer und extrahieren Sie sie schließlich aus a Prüfcodezeichenfolge Gibt die Zeichen aus, die der Seriennummer entsprechen. Natürlich gibt es im Internet viele Artikel, in denen Sie lernen, diesen Prüfcode zu berechnen. Im Folgenden werden wir versuchen, diese Arbeit mithilfe der PHP-Sprache abzuschließen. Er kann in der PHP-Entwicklung verwendet werden, um beispielsweise zu überprüfen, ob die ID-Nummer des Benutzers korrekt ist.

Angenommen, die ersten 17 Ziffern der Personalausweisnummer eines chinesischen Staatsbürgers (Festland) lauten wie folgt: 44010221990101001 (Hinweis: Diese Person wurde im Jahr 2199 geboren), dann versuchen wir, ein paar Zeilen PHP-Code entsprechend zu schreiben Verwenden Sie den obigen Algorithmus, um die Berechnung der Prüfsumme abzuschließen. Um das Verständnis für alle zu erleichtern, habe ich einfachere Anweisungen verwendet. Schauen Sie sich bitte den Code an:

<?php
//身份证号码前17位,可以从各种数据源中获得(如数据库、用户提交的表单等)
$body = &#39;44010221990101001&#39;;
//加权因子
$wi = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
//校验码串
$ai = array(&#39;1&#39;, &#39;0&#39;, &#39;X&#39;, &#39;9&#39;, &#39;8&#39;, &#39;7&#39;, &#39;6&#39;, &#39;5&#39;, &#39;4&#39;, &#39;3&#39;, &#39;2&#39;);
//按顺序循环处理前17位
for ($i = 0;$i < 17;$i++) {
//提取前17位的其中一位,并将变量类型转为实数
$b = (int) $body{$i};
//提取相应的加权因子
$w = $wi[$i];
//把从身份证号码中提取的一位数字和加权因子相乘,并累加
$sigma += $b * $w;
}
//计算序号
$number = $sigma % 11;
//按照序号从校验码串中提取相应的字符。
$check_number = $ai[$number];
//输出
echo $body.$check_number;
?>

Nachdem Sie den obigen Code ausgeführt haben, können Sie berechnen die Nummer des Personalausweises. Der Prüfcode ist 9. Sie können es mit den ersten 17 Ziffern Ihres Personalausweises versuchen.

Wenn Sie das obige Beispiel verstehen, können Sie einige Anweisungen dieses Codes zusammenführen, unnötige Variablen entfernen und optimieren, um den folgenden Code zu erhalten:

<?php
$body = &#39;44010221990101001&#39;;
$wi = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
$ai = array(&#39;1&#39;, &#39;0&#39;, &#39;X&#39;, &#39;9&#39;, &#39;8&#39;, &#39;7&#39;, &#39;6&#39;, &#39;5&#39;, &#39;4&#39;, &#39;3&#39;, &#39;2&#39;);
for ($i = 0;$i < 17;$i++) {
$sigma += ((int) $body{$i}) * $wi[$i];
}
echo $body.$ai[($sigma % 11)];
?>

Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Studium aller hilfreich sein.

Verwandte Empfehlungen:

Detaillierte Beispiele für die Verwendung statischer Variablen in PHP

thinkPHPs Methode zur digitalen Umsetzung der Bestellung Erinnerungsfunktion

Hinweise zum Zugriff auf PHP Sesame Credit

Das obige ist der detaillierte Inhalt vonImplementierung einer Methode zur Berechnung des ID-Karten-Verifizierungscodes basierend auf PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn