ID 番号の入力が必要なアプリケーションを開発する場合、入力された ID 番号が正しいかどうかを確認することが非常に重要です。この記事では、PHP 正規表現を使用して ID 番号の正当性を検証する方法を紹介します。
ID番号とは何ですか?
ID カード番号は、中国 (本土) の居住者を識別するために使用され、18 桁の数字と文字で構成される個人識別番号です。
ID 番号の構造
ID 番号は 18 桁の数字と文字で構成されており、最初の 1 桁目は所在地の都道府県または市区町村を示す数字、2 桁目から 6 桁目までです。数字は地域を示す数字、7 桁目から 14 桁目は生年月日を示す日付コード、15 桁目から 17 桁目は地元の警察署のコードを示す数字、18 桁目は数字または文字、アルゴリズムによって計算され、ID 番号の正確性を検証するために使用されます。
正規表現を使用して ID 番号の有効性を検証する
正規表現は文字列パターンを記述する言語であり、文字列の取得、置換、分離に使用できます。 PHP 正規表現を使用して、ID 番号の有効性を確認します。
以下は基本的な ID 番号検証ルールの一部です:
1. ID 番号は 18 個の数字と文字で構成されます。
2. ID 番号の 1 桁目から 6 桁目は、お客様がお住まいの地域を示し、所定の行政区画コードに準拠しています。
3. ID カード番号の 7 桁目から 14 桁目は生年月日を示しており、日付の合法性と一致しています。
4. ID番号の15桁目から17桁目は所轄の警察署のコードを表します。
5. ID 番号の最後の桁はチェック コードであり、アルゴリズムによって計算できます。
上記の規則に従って、正規表現は次の部分に分割されます:
1. ID 番号の長さは 18 桁です。
2. ID 番号の 1 桁目から 6 桁目は数字または文字です。
3. ID 番号の 7 桁目から 14 桁目は数字であり、日付の正当性に従います。
4. ID番号の15桁目から17桁目は数字です。
5. ID 番号の最後の桁は数字または文字です。
上記のルールに従って、次のような PHP 正規表現コードを記述できます:
function validate_id_card($id_card){ //身份证号码的长度为18位 if(strlen($id_card)!=18){ return false; } //身份证号码中第一位至第六位是数字或字母 $pattern='/^[0-9a-zA-Z]{6}/'; if(!preg_match($pattern, substr($id_card,0,6))){ return false; } //身份证号码中第七位至第十四位是数字,且符合日期的合法性 $date=substr($id_card,6,8); if(!is_numeric($date)){ return false; } $year=(int)substr($date,0,4); $month=(int)substr($date,4,2); $day=(int)substr($date,6,2); if(!checkdate($month,$day,$year)){ return false; } //身份证号码中第十五位至第十七位是数字 $pattern='/^d{3}/'; if(!preg_match($pattern, substr($id_card, 14, 3))){ return false; } //身份证号码中最后一位是数字或字母 $pattern='/^[0-9a-zA-Z]{1}/'; if(!preg_match($pattern, substr($id_card, 17, 1))){ return false; } //校验码验证 $digit_array=array(1,0,'X',9,8,7,6,5,4,3,2); $check_sum=0; for($i=0;$i<17;$i++){ $check_sum += substr($id_card,$i,1)*$digit_array[$i]; } $mod=$check_sum%11; $verify_code=$digit_array[$mod]; if($verify_code != strtoupper(substr($id_card,17))){ return false; } return true; }
コードの説明:
使用例
PHP でこの関数を使用する方法は次のとおりです:
$id_card='510722199091231234'; if(validate_id_card($id_card)){ echo $id_card.' 是有效的身份证号码'; } else{ echo $id_card.' 不是有效的身份证号码'; }
出力:
510722199091231234 是有效的身份证号码
Summary
Through上記のPHP正規表現コードと使用例により、IDカード番号の正当性検証を実現できます。 ID 番号を使用するアプリケーションを開発する場合、不正なデータ入力によって引き起こされる例外やエラーを回避するために、ID 番号の正当性を保証することが非常に重要です。
以上がPHP正規表現を使用してID番号の有効性を検証する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。