Web サイトやアプリケーションでは、ユーザーが入力した情報を検証する必要があることが多く、ID 番号、パスポート番号、軍用 ID 番号などが一般的な検証対象です。 PHP では、正規表現は、入力文字列が適切な形式であることを確認するために使用できる非常に便利なツールです。この記事では、PHP 正規表現を使用して ID 番号、パスポート番号、軍人 ID 番号の形式を確認する方法を紹介します。
ID 番号は 18 桁または 15 桁で、18 桁の ID 番号の最後の桁は数字または文字の場合があります。バツ。以下は、ID 番号の形式を検証するための PHP コードです。
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; } }
このコードは、最初に ID 番号の長さに応じて異なる検証関数を呼び出します。 18 桁の ID 番号 checkIDCard18($idcard)
を検証する関数は、18 桁と一致する正規表現 /^d{17}(d|x)$/i
を使用します。ヘッダーとオプションの数字または文字 X。照合が成功した場合、関数は引き続き ID 番号の生年月日が正しいかどうかを検証し、ID 検証コードを取得して最後の数字または文字 X と比較します。 15桁のID番号を確認する関数 checkIDCard15($idcard)
まず18桁のID番号に変換してから、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 桁の数字が続く文字列と一致します。
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 が使用されています。 ~ 17 数字と文字の文字列。照合が成功した場合、関数は軍用 ID 番号の 10 桁から 16 桁が数字であるかどうか、および 17 桁が数字または文字であるかどうかを引き続き検証します。
以上がPHP 正規表現を使用して、入力文字列が正しい ID 番号、パスポート番号、軍用 ID 番号の形式であるかどうかを確認する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。