Heim  >  Artikel  >  Backend-Entwicklung  >  So überprüfen Sie die Nummer eines Provinzzertifikats mithilfe eines regulären PHP-Ausdrucks

So überprüfen Sie die Nummer eines Provinzzertifikats mithilfe eines regulären PHP-Ausdrucks

PHPz
PHPzOriginal
2023-06-24 10:53:181095Durchsuche

Mit der Entwicklung des Internets ist der Verlust persönlicher Daten zu einem Problem geworden, das nicht ignoriert werden kann. Beispielsweise ist die Ausweisnummer eines der wichtigen Ausweisdokumente, die wir für viele Dinge bereitstellen müssen. Wenn die ID-Nummer jedoch in böswilliger Absicht verwendet wird oder durchsickert, wird dies eine Menge Ärger in unser Leben bringen. Um den Schutz personenbezogener Daten zu verbessern, können wir ein Programm schreiben, um zu überprüfen, ob die vom Benutzer eingegebene ID-Nummer zulässig ist. Reguläre PHP-Ausdrücke sind eine gängige Methode.

1. Die Zusammensetzungsregeln der ID-Nummer
Bevor wir reguläre Ausdrücke zur Überprüfung der ID-Nummer verwenden, wollen wir zunächst die Zusammensetzungsregeln der chinesischen ID-Nummer verstehen:

1 Die 18-stellige ID-Nummer besteht aus 17 Ziffern und 1 Kalibrierungsziffer.
2. Die ersten 6 Ziffern sind das Geburtsdatum, zum Beispiel 870905 4. Die 15. bis 17. Ziffer ist die Sequenznummer, die die Reihenfolge darstellt, in der ich mich bei der örtlichen Haushaltsregistrierungsverwaltung registriert habe
5. Die 18. Ziffer ist der Prüfcode, der zur Überprüfung der Richtigkeit der ID verwendet wird Karte.

2. Verwenden Sie reguläre PHP-Ausdrücke, um die ID-Nummer zu überprüfen.

Verwenden Sie in PHP die Funktion preg_match(), um reguläre Ausdrücke abzugleichen. Das Folgende ist ein PHP-Code, der reguläre Ausdrücke verwendet, um ID-Kartennummern zu überprüfen:

function validateIDCard($id_card)
{
    //正则表达式
    $reg = '/^d{17}[0-9x]$/i';
    //匹配
    if(preg_match($reg, $id_card))
    {
        //校验码验证
        $arr = str_split($id_card);
        $last = strtolower($arr[17]) == 'x' ? 10 : $arr[17];
        $card_sum = 0;
        $wi = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
        for($i = 0; $i < 17; $i++)
        {
            $card_sum += $arr[$i] * $wi[$i];
        }
        $card_sum %= 11;
        $card_sum = 12 - $card_sum;
        if($card_sum == 10)
        {
            $card_sum = 'x';
        }
        if($card_sum == strtolower($arr[17]))
        {
            return true;
        }
    }
    return false;
}

In diesem Code definieren wir zunächst einen regulären Ausdruck $reg, und in diesem regulären Ausdruck verwenden wir ^d{17}[ 0-9x] $, um die 18-stellige ID-Nummer abzugleichen, wobei d für eine Zahl steht, {17} für übereinstimmende 17 Ziffern steht und [0-9x] angibt, dass die letzte Ziffer eine Zahl oder der Buchstabe x sein kann.

Dann verwenden wir die Funktion preg_match(), um einen regulären Abgleich durchzuführen. Wenn die Übereinstimmung erfolgreich ist, wird die anschließende Überprüfung des Bestätigungscodes fortgesetzt. Bei der Überprüfung des Prüfcodes wird hauptsächlich das Produkt jeder Ziffer mit einem festen Faktor multipliziert und schließlich das Ergebnis überprüft. Wenn der Prüfcode korrekt ist, bedeutet dies, dass die ID-Nummer korrekt ist.

3. Zusammenfassung

Die Genauigkeit der ID-Nummer ist sehr wichtig. Wenn sie falsch ist, wird sie viel Ärger in unser Leben bringen. Durch das Schreiben eines Programms können wir überprüfen, ob die vom Benutzer eingegebene ID-Nummer korrekt ist. In diesem Artikel wird erläutert, wie Sie reguläre PHP-Ausdrücke zur Überprüfung von ID-Nummern verwenden. Ich hoffe, dieser Artikel kann allen helfen.

Das obige ist der detaillierte Inhalt vonSo überprüfen Sie die Nummer eines Provinzzertifikats mithilfe eines regulären PHP-Ausdrucks. 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