Maison  >  Article  >  développement back-end  >  Comment vérifier le code de contrôle du numéro de carte d'identité à l'aide de l'expression régulière PHP

Comment vérifier le code de contrôle du numéro de carte d'identité à l'aide de l'expression régulière PHP

WBOY
WBOYoriginal
2023-06-24 09:04:151779parcourir

Le numéro d'identification est un document important que les gens ont souvent besoin d'utiliser dans leur vie quotidienne, et la vérification du dernier code de contrôle dans le numéro d'identification est un élément important pour savoir si le numéro d'identification est légal. Lors de la programmation en PHP, nous pouvons utiliser des expressions régulières pour vérifier le code de contrôle dans le numéro d'identification afin de garantir la validité du numéro d'identification. Ce qui suit présentera la méthode de vérification du code de contrôle du numéro de carte d'identité à l'aide d'expressions régulières PHP.

  1. Format du numéro d'identification

Tout d'abord, nous devons comprendre le format du numéro d'identification. Le numéro de carte d'identité se compose de 18 chiffres et lettres, dont les 17 premiers chiffres représentent la province, la ville, le comté, la date de naissance et d'autres informations, et le dernier chiffre est un code de contrôle. Les règles de calcul du code de contrôle sont les suivantes :

  1. Multipliez les 17 premiers chiffres du numéro d'identification par le facteur de poids correspondant dans l'ordre, c'est-à-dire le facteur de poids du i- la position est Wi.
  2. Ajoutez ces 17 produits pour obtenir du S.
  3. Le code de contrôle N est le reste de 11 moins S divisé par 11, où X représente 10.
  4. Écriture d'expressions régulières

Avec les connaissances de base ci-dessus, nous pouvons écrire des expressions régulières pour vérifier les numéros d'identification. Voici un exemple de code :

function checkIDCard($id_card){
    $pattern = '/^d{6}(19|20)d{2}(0d|1[0-2])([0-2]d|3[0-1])d{3}[0-9X]$/';
    if(preg_match($pattern, $id_card)){
        $wi = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
        $ai = str_split(substr($id_card, 0, 17));
        $n = 0;
        for($i=0; $i<17; $i++){
            $n += $wi[$i] * $ai[$i];
        }
        $c = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
        $check_code = $c[$n % 11];
        return $check_code == substr($id_card, -1);
    }
    return false;
}

$id_card = '33010219950917413X';
if(checkIDCard($id_card)){
    echo '身份证号码校验成功';
}else{
    echo '身份证号码校验失败';
}

Dans l'expression régulière ci-dessus, d signifie correspondre à des nombres, {6} signifie correspondre 6 fois, (19|20)d{2} signifie correspondre à 19 ou 20. les 4 premiers chiffres, (0d|1[0-2]) signifie faire correspondre les mois de 01 à 12, ([0-2]d|3[0-1]) signifie faire correspondre les dates de 01 à 31, d{3 } signifie correspondre à trois autres nombres, [0-9X]$ signifie qu'il se termine par un nombre ou X. Cela correspondra effectivement au numéro d’identification.

  1. Test de vérification

Enfin, nous pouvons tester si notre code fonctionne. Nous pouvons modifier le code de vérification du numéro de carte d'identité pour vérifier si la fonction de vérification du code est normale. Par exemple :

$id_card = '330102199509174133';

ou :

$id_card = '330102199509174139';

Les codes de contrôle de ces deux numéros d'identification sont erronés et ne devraient pas réussir la vérification. Et lorsque nous exécutons le code, nous verrons que le résultat de l'échec de la vérification du numéro d'identification est affiché, prouvant que notre code peut fonctionner normalement.

En bref, la méthode d'utilisation de l'expression régulière PHP pour vérifier le code de contrôle du numéro de carte d'identité est relativement simple. Il vous suffit d'écrire une expression régulière appropriée et les fonctions associées pour compléter facilement la carte d'identité. . Travaux de vérification du numéro.

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