Maison >développement back-end >tutoriel php >Comment vérifier le numéro d'identification via php

Comment vérifier le numéro d'identification via php

jacklove
jackloveoriginal
2018-06-09 11:44:426701parcourir

La structure du numéro d'identification

Le numéro d'identification est un code combiné caractéristique, composé d'un code corporel à 17 chiffres et d'un code de contrôle à un bit.

L'ordre de gauche à droite est : Code d'adresse à six chiffres, code de date de naissance à huit chiffres, code de séquence à trois chiffres et code de contrôle à un chiffre .

Code adresse (six premiers chiffres)

Indique le comté (ville, bannière, Le code de la division administrative de le district) doit être mis en œuvre conformément aux dispositions du GB/T2260.

Code date de naissance (septième à quatorzième chiffres)

Indique l'année et le mois de naissance de l'objet de codage , jour, conformément aux dispositions du GB/T7408, aucun séparateur n'est utilisé entre les codes année, mois et jour.

Code séquence (15ème au 17ème chiffre)

indique que les adresses identifiées par le même code d'adresse Au sein du Dans cette région, des numéros séquentiels sont attribués aux personnes nées la même année, le même mois et le même jour. Les nombres impairs sont attribués aux hommes et les nombres pairs aux femmes.

Code de contrôle (18ème chiffre)

1. Calcul pondéré du code d'ontologie à dix-sept chiffres Et la formule

S= SUM(Ai * Wi), i=0, ... , 16, additionnez d'abord les poids des 17 premiers chiffres.

Ai : Représente la valeur numérique du numéro d'identification à la i-ème position

Wi : Représente le facteur de pondération à la i- ème position

Wi : 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2


2. Module de calcul

Y = mod(S, 11)


3. Obtenez le code de chèque correspondant

Y : 0 1 2 3 4 5 6 7 8 9 10

Code de contrôle : 1 0 X 9 8 7 6 5 4 3 2

Méthode de vérification du numéro d'identification :

<?php
function checkIdCard($idcard){
    // 只能是18位
    if(strlen($idcard)!=18){
        return false;
    }
    // 取出本体码
    $idcard_base = substr($idcard, 0, 17);
    // 取出校验码
    $verify_code = substr($idcard, 17, 1);
    // 加权因子
    $factor = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
    // 校验码对应值
    $verify_code_list = 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位计算校验码
    $total = 0;
    for($i=0; $i<17; $i++){
        $total += substr($idcard_base, $i, 1)*$factor[$i];
    }
    // 取模
    $mod = $total % 11;
    // 比较校验码
    if($verify_code == $verify_code_list[$mod]){
        return true;
    }else{
        return false;
    }
}
$idcard = &#39;这里填写要验证的身份证号码&#39;;
var_dump(checkIdCard($idcard));
?>

Cet article explique comment vérifier le numéro d'identification via php. Pour plus de contenu connexe, veuillez payer. attention au net chinois php.

Recommandations associées :

Comment obtenir des informations sur les vidéos YouTube via php

À propos de la solution pour que php unserialize renvoie false

Comment générer un tableau correspondant basé sur une chaîne via php


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