ホームページ  >  記事  >  バックエンド開発  >  ID番号の正確性を検証するためのPHP正規表現

ID番号の正確性を検証するためのPHP正規表現

PHPz
PHPzオリジナル
2023-06-24 08:49:361668ブラウズ

Web サイトの開発プロセスでは、ユーザーが入力したデータを検証する必要があることがよくありますが、それに含まれる ID 番号の検証は非常に重要です。 ID 番号は個人を証明する唯一の証明書であり、ID 番号の正確性を確認することが重要です。この記事では、PHP 正規表現を使用して ID 番号の正確性を検証する方法を紹介します。

ID 番号の基本ルール
ID 番号は 18 桁の数字と文字 (X) で構成され、最初の 17 桁は固定形式で、最後の 1 桁は数字または "バツ" "。 ID番号の最初の6桁は市外局番、真ん中の8桁は生年月日、最後の4桁は地域、性別、通し番号からなるチェックコードです。このうち、市外局番、生年月日、チェックコードには一定のルールがあります。

ID 番号の確認

PHP の preg_match 関数を使用すると簡単に ID 番号を確認できます。 preg_match 関数の最初のパラメータは一致する正規表現で、2 番目のパラメータは一致する文字列です。以下は例です:

$pattern = '/^d{17}[Xd]$/';
$id = '110101199001011234'; //検証するID番号
if (preg_match($pattern, $id)) {

//身份证号码格式正确

} else {

//身份证号码格式错误

}

上記のコードでは、正規表現 $pattern を使用して ID を検証します。証明書番号。これは、ID 番号が 17 桁と数字または文字「X」で構成される必要があることを示します。次に、ID 番号の各部分がどのように一致する必要があるかを詳しく説明します。

一致する市外局番

ID 番号の最初の 6 桁は市外局番で、ID 番号が存在する行政区画を示します。このうち、最初の 2 桁は州を表し、最後の 4 桁は市または郡を表します。市外局番は州によって一律に割り当てられ、各行政区画には対応するコードがあります。

次の正規表現を使用して市外局番を照合できます:

$area_pattern = '/^([1-9]d|([1-9][0-9]) d{4})$/';
$area_code = substr($id, 0, 6); //ID 番号から市外局番の最初の 6 桁を取得します
if (preg_match($area_pattern, $area_code )) {

//区域代码格式正确

} else {

//区域代码格式错误

}

上記のコードでは、正規表現 $area_pattern を使用して市外局番を照合します。これは、市外局番が 6 桁である必要があることを示します。 $area_code は、ID 番号から市外局番の最初の 6 桁を抽出するために使用されます。

生年月日照合

ID番号の中8桁が生年月日となり、所有者の生まれた年、月、日を表します。このうち、最初の 4 桁は年、最後の 2 桁は月、最後の 2 桁は日数を表します。生年月日は、現在の年を超えることはできないなど、特定のルールに従う必要があります。

次の正規表現を使用して正しい生年月日と一致させることができます:

$birthday_pattern = '/^((19|20)d{2})(0[1-9 ] |1[012])(0[1-9]|[12][0-9]|3[01])$/';
$誕生日 = substr($id, 6, 8); / / ID 番号から中央 8 桁の生年月日を取得します
if (preg_match($birthday_pattern, $birthday)) {

//出生日期格式正确

} else {

//出生日期格式错误

}

上記のコードでは、正しい生年月日と一致させるために正規表現 $birthday_pattern が使用されています。生年月日は年を表す 4 桁、月を表す 2 桁、および日を表す 2 桁で構成される必要があることを示します。 $birthday は、ID 番号から中央の 8 桁の生年月日を抽出するために使用されます。

照合確認コード

ID番号の下一桁が確認コードで、ID番号が正しいかどうかを確認するために使用されます。チェックコードは地域、性別、連番などの情報から構成される最初の17桁から計算されます。一定のアルゴリズムによりチェックコードを取得し、それがID番号の下一桁と一致すればID番号が正しいことを意味します。

次の正規表現を使用してチェック コードを照合できます:

$check_code_pattern = '/^d{17}[Xd]$/';
if (preg_match($ check_code_pattern, $id)) {

$n = 0;
for ($i = 0; $i < 17; $i++) {
    $n += $id[$i] * pow(2, 17 - $i) % 11;
}
$check_code = $n % 11 == 1 ? 'X' : (12 - $n % 11);
if ($check_code == substr($id, -1)) {
    //身份证号码校验通过
} else {
    //身份证号码校验失败
}

} else {

//身份证号码格式错误

}

上記のコードでは、ID 番号が一致することを確認するために正規表現 $check_code_pattern が使用されています。最初の 17 桁の数字と最後の数字または文字「X」。 ID 番号の形式が正しい場合は、特定のアルゴリズムを使用してチェック コード $check_code を計算し、ID 番号の最後の桁と比較します。

概要

この記事では、PHP 正規表現を使用して ID 番号の正確性を確認する方法を紹介します。 ID 番号は唯一の個人識別となるため、Web サイトを開発する場合、ID 番号の確認は非常に重要です。この記事の導入により、誰でも簡単に PHP 正規表現を使用して ID 番号を確認できるようになると思います。

以上がID番号の正確性を検証するためのPHP正規表現の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。