Heim  >  Artikel  >  Backend-Entwicklung  >  So verwenden Sie reguläre PHP-Ausdrücke, um zu überprüfen, ob die Eingabezeichenfolge im richtigen Format für die ID-Nummer, Passnummer oder Militär-ID-Nummer vorliegt

So verwenden Sie reguläre PHP-Ausdrücke, um zu überprüfen, ob die Eingabezeichenfolge im richtigen Format für die ID-Nummer, Passnummer oder Militär-ID-Nummer vorliegt

WBOY
WBOYOriginal
2023-06-24 09:30:061052Durchsuche

Auf Websites oder Anwendungen müssen wir häufig die von Benutzern eingegebenen Informationen überprüfen, darunter ID-Nummer, Reisepassnummer und Militärausweisnummer gängige Überprüfungsobjekte. In PHP sind reguläre Ausdrücke ein sehr praktisches Werkzeug, mit dem überprüft werden kann, ob die Eingabezeichenfolge wohlgeformt ist. In diesem Artikel wird erläutert, wie Sie mithilfe regulärer PHP-Ausdrücke das Format von ID-Nummer, Passnummer und Militärausweisnummer überprüfen.

  1. Format der ID-Kartennummer überprüfen

Die ID-Nummer besteht aus 18 oder 15 Ziffern, und die letzte Ziffer der 18-stelligen ID-Nummer kann eine Zahl oder der Buchstabe X sein. Das Folgende ist der PHP-Code zum Überprüfen des Formats der ID-Nummer:

function checkIDCard($idcard){
    if(strlen($idcard)==18){
        return checkIDCard18($idcard);
    }elseif(strlen($idcard)==15){
        $idcard = idcardPro18to15($idcard);
        return checkIDCard15($idcard);
    }else{
        return false;
    }
}

// 验证18位身份证号码
function checkIDCard18($idcard){
    $regx = "/^d{17}(d|x)$/i";
    if(preg_match($regx, $idcard)){
        $idcard = strtoupper($idcard);
        $idcard_year = intval(substr($idcard,6,4));
        $idcard_month = intval(substr($idcard,10,2));
        $idcard_day = intval(substr($idcard,12,2));
        if(checkdate($idcard_month, $idcard_day, $idcard_year)){
            $idcard_base = substr($idcard, 0, 17);
            if(getVerifyBit($idcard_base) == substr($idcard, 17, 1)){
                return true;
            }
        }
    }
    return false;
}

// 验证15位身份证号码
function checkIDCard15($idcard){
    $regx = "/^d{15}$/i";
    if(preg_match($regx, $idcard)){
        $idcard = idcardPro15to18($idcard);
        return checkIDCard18($idcard);
    }else{
        return false;
    }
}

// 获取身份证校验码
function getVerifyBit($idcard_base){
    if(strlen($idcard_base)!= 17){
        return false;
    }
    $factor = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
    $verify_number_list = array('1','0','x','9','8','7','6','5','4','3','2');
    $checksum = 0;
    for($i = 0;$i < strlen($idcard_base);$i++){
        $checksum += substr($idcard_base, $i, 1) * $factor[$i];
    }
    $mod = $checksum % 11;
    $verify_number = $verify_number_list[$mod];
    return $verify_number;
}

// 将15位身份证号码转成18位
function idcardPro15to18($idcard){
    if(strlen($idcard)!=15){
        return false;
    }else{
        $year = '19' . substr($idcard, 6, 2);
        $month = substr($idcard, 8, 2);
        $day = substr($idcard, 10, 2);
        $idcard = substr_replace($idcard, $year, 6, 2);
        $idcard = substr_replace($idcard, $month, 8, 2);
        $idcard = substr_replace($idcard, $day, 10, 2);
        return $idcard;
    }
}

// 将18位身份证号码转成15位
function idcardPro18to15($idcard){
    if(strlen($idcard)!=18){
        return false;
    }else{
        $idcard = substr($idcard,0,6) . substr($idcard,8,9);
        return $idcard;
    }
}

Der Code ruft zunächst verschiedene Überprüfungsfunktionen basierend auf der Länge der ID-Nummer auf. Die Funktion checkIDCard18($idcard), die die 18-stellige ID-Kartennummer überprüft, verwendet den regulären Ausdruck /^d{17}(d|x)$/i Regulärer Ausdruck Die Formel entspricht einer 18-stelligen Zahl und einer optionalen Zahl oder einem Buchstaben X. Wenn die Übereinstimmung erfolgreich ist, überprüft die Funktion weiterhin, ob das Geburtsdatum der ID-Nummer korrekt ist, erhält den ID-Verifizierungscode und vergleicht ihn mit der letzten Ziffer oder dem letzten Buchstaben X. Die Funktion zur Verifizierung der 15-stelligen Ausweisnummer checkIDCard15($idcard) wandelt diese zunächst in eine 18-stellige Ausweisnummer um und ruft dann den checkIDCard18($idcard) auf Funktion zur Verifizierung. checkIDCard18($idcard) 使用了正则表达式 /^d{17}(d|x)$/i,该正则表达式匹配18位数字头和可选的数字或字母 X。如果匹配成功,函数继续验证身份证号码的出生日期是否正确,以及获取身份证校验码,并与最后一位数字或字母 X 进行比较。验证15位身份证号码的函数 checkIDCard15($idcard) 首先将其转换为18位身份证号码再调用 checkIDCard18($idcard) 函数进行验证。

  1. 验证护照号码格式

护照号码格式是固定的,为1位大写字母+6-9位数字。下面是验证护照号码格式的PHP代码:

function checkPassport($passport){
    $regx = "/^[a-zA-Z]d{6,9}$/i";
    if(preg_match($regx, $passport)){
        return true;
    }else{
        return false;
    }
}

该代码使用正则表达式 /^[a-zA-Z]d{6,9}$/i,该正则表达式匹配以一个大写字母开头,后面6至9位为数字的字符串。

  1. 验证军官证号码格式

军官证号码为10至18位数字和字母的组合,其中第10位至第16位为数字,第17位可以为数字或字母。下面是验证军官证号码格式的PHP代码:

function checkOfficerCard($officercard){
    $regx = "/^w{9,17}$/i";
    if(preg_match($regx, $officercard)){
        if(ctype_digit(substr($officercard, 9, 7))){
            return true;
        }elseif(ctype_digit(substr($officercard, 9, 6)) && ctype_alpha(substr($officercard, 16, 1))){
            return true;
        }else{
            return false;
        }
    }else{
        return false;
    }
}

该代码使用正则表达式 /^w{9,17}$/i

    Format der Passnummer überprüfen

    Das Format der Passnummer ist fest, nämlich 1 Großbuchstabe + 6–9 Ziffern. Unten ist der PHP-Code, der das Passnummernformat überprüft:

    rrreee🎜Der Code verwendet den regulären Ausdruck /^[a-zA-Z]d{6,9}$/i, der mit A übereinstimmt Zeichenfolge, die mit einem Großbuchstaben beginnt und von 6 bis 9 Ziffern gefolgt wird. 🎜
      🎜Überprüfen Sie das Format der Militär-ID-Nummer🎜🎜🎜Die Militär-ID-Nummer ist eine Kombination aus 10 bis 18 Ziffern und Buchstaben, wobei die 10. bis 16. Ziffer Zahlen sind und die 17. Ziffer eine sein kann eine Zahl oder ein Buchstabe. Unten ist der PHP-Code, der das Format der militärischen ID-Nummer überprüft: 🎜rrreee🎜Der Code verwendet den regulären Ausdruck /^w{9,17}$/i, der 9 bis 17 Ziffern und eine Zeichenfolge entspricht von Buchstaben. Wenn der Abgleich erfolgreich ist, überprüft die Funktion weiterhin, ob die 10. bis 16. Ziffer der Militärausweisnummer Zahlen sind und ob die 17. Ziffer eine Zahl oder ein Buchstabe ist. 🎜🎜Zusammenfassung🎜🎜In diesem Artikel wird erläutert, wie Sie mithilfe regulärer PHP-Ausdrücke das Format von ID-Nummer, Passnummer und Militärausweisnummer überprüfen. Mit regulären Ausdrücken kann effektiv überprüft werden, ob das Format der Benutzereingabeinformationen den Anforderungen entspricht. Insbesondere die Verifizierung von Personalausweisnummern erfordert den Aufruf verschiedener Verifizierungsfunktionen auf Basis unterschiedlicher Ziffern, darunter die Verifizierung des Geburtsdatums und die Generierung von Verifizierungscodes. Bei der Überprüfung von Informationen sollte jedoch die Privatsphäre der Benutzer geschützt werden. 🎜

Das obige ist der detaillierte Inhalt vonSo verwenden Sie reguläre PHP-Ausdrücke, um zu überprüfen, ob die Eingabezeichenfolge im richtigen Format für die ID-Nummer, Passnummer oder Militär-ID-Nummer vorliegt. 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