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
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.
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位大写字母+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位为数字的字符串。
军官证号码为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
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. 🎜/^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!