Maison  >  Article  >  développement back-end  >  Implémentation d'une méthode de calcul du code de vérification de la carte d'identité basée sur PHP

Implémentation d'une méthode de calcul du code de vérification de la carte d'identité basée sur PHP

墨辰丷
墨辰丷original
2018-06-01 15:45:552001parcourir

Cet article partagera avec vous la tentative d'utilisation du langage PHP pour implémenter le code de vérification de la carte d'identité afin de déterminer si le numéro d'identification de l'utilisateur est correct

La signification de chaque chiffre du citoyen chinois (continental). Numéro d’identification. De nombreux articles sur Internet l’ont introduit, je n’entrerai donc pas dans les détails ici. Le dernier chiffre du numéro d'identification est le code de contrôle, calculé sur la base des 17 premiers chiffres. L'algorithme est grossièrement le suivant : multiplier chaque nombre dans les 17 premiers chiffres par une série de facteurs de pondération, puis calculer la somme de ces produits modulo 11 comme numéro de série, et enfin l'extraire d'un check code string Afficher les caractères correspondant au numéro de série. Bien sûr, il existe de nombreux articles sur Internet qui vous apprennent à calculer ce code de contrôle. Ci-dessous, nous essaierons d'utiliser le langage PHP pour réaliser ce travail. Il peut être utilisé dans le développement PHP, par exemple pour vérifier si le numéro d'identification de l'utilisateur est correct.

Supposons que les 17 premiers chiffres du numéro de carte d'identité d'un citoyen chinois (continental) soient les suivants : 44010221990101001 (Remarque : cette personne est née en 2199), puis nous essayons d'écrire quelques lignes de code PHP selon l'algorithme ci-dessus pour terminer le calcul de la somme de contrôle. Afin de faciliter la compréhension de tout le monde, j'ai utilisé des déclarations plus simples, veuillez consulter le code :

<?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;
?>

Après avoir exécuté le code ci-dessus, l'identité peut être calculé Le code de contrôle du certificat est 9. Vous pouvez essayer d'utiliser les 17 premiers chiffres de votre carte d'identité.

Si vous comprenez l'exemple ci-dessus, vous pouvez fusionner certaines instructions de ce code, supprimer les variables inutiles et optimiser pour obtenir le code suivant :

<?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)];
?>

Résumé : Ce qui précède représente l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'étude de chacun.

Recommandations associées :

Exemples détaillés de la façon d'utiliser des variables statiques en PHP

Méthode de thinkPHP pour implémenter la commande numérique fonction de rappel

Remarques sur l'accès au crédit PHP Sésame

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn