ホームページ >バックエンド開発 >PHPチュートリアル >PHPで正規表現を使用してID番号と生年月日を一致させる方法

PHPで正規表現を使用してID番号と生年月日を一致させる方法

王林
王林オリジナル
2023-06-22 22:25:391973ブラウズ

ID 番号は、個人の生年月日、性別、出身地など多くの情報が保存される非常に重要な機密情報です。 PHP で正規表現を使用して ID 番号の生年月日を照合することが特に重要になります。この記事では、PHP で正規表現を使って ID カード番号の生年月日を照合する方法を次の 3 つの側面から紹介します。

1. ID 番号の形式

ID 番号の形式には一定の規定があり、次の情報が含まれます:

  1. 最初の 2 桁は州を表します。
  2. 中央の 2 つは市または郡レベルの都市を表します。
  3. の後には誕生年が続きます。
  4. 次の 2 つは誕生月を表します。
  5. 以降 生年月日を
  6. とチェックコードの 2 桁で表します。

ID 番号は合計 18 桁で、最初の 17 桁は数字または大文字、最後の 1 桁は数字または大文字の X です。したがって、正規表現を使用して ID 番号の生年月日を照合する前に、ID 番号の形式を理解しておく必要があります。

2. 正規表現の使用

PHP では、preg_match 関数を使用して正規表現を呼び出し、ID 番号を照合します。生年月日を照合するには、括弧 () を使用して誕生年、月、日をグループ化し、次のように正規表現で対応するワイルドカード文字を使用する必要があります:

$pattern = '/^d{6}(19|20)d{2}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])d{3}[dX]$/';

where:

  1. # は一致する文字列の先頭を表し、
  2. d{6} は最初の 6 つの州および市の情報と一致します。
  3. ##(19 |20) 誕生年の最初の 2 桁と一致します (19 または 20 に制限されます);
  4. d{2} と一致します誕生年の最後の 2 桁;
  5. (0[1-9]|1[012]) 誕生月と一致します。範囲は 01 ~ 12 です。
  6. (0[1-9]|[12] [0-9]|3[01]) 生年月日と一致します。制限範囲は 01 ~ 31 です。
  7. d{3} ID 番号の最後の 3 桁と一致 コード検証;
  8. [dX] は ID 番号の最後の 1 桁と一致します。数字または大文字の X;
  9. $ は文字列の末尾と一致することを示します。
3. コードの実装

preg_match 関数と上記の正規表現を使用して ID 番号を照合し、括弧を使用して誕生日、月、日をグループ化できます。得る。コードは次のとおりです。

$id_card = '34052419951117258X';  // 身份证号码
$pattern = '/^d{6}(19|20)d{2}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])d{3}[dX]$/';  // 正则表达式

if (preg_match($pattern, $id_card, $matches)) {
    $birth_year = $matches[1] . $matches[2];  // 出生年份
    $birth_month = $matches[3];  // 出生月份
    $birth_day = $matches[4];  // 出生日期
    echo "出生日期:{$birth_year}-{$birth_month}-{$birth_day}";  // 输出
} else {
    echo "身份证号码格式不正确";
}

上記コードの出力結果は次のとおりです。

出生日期:1995-11-17

この記事では、ID カード番号の生年月日を正規表現を使用して照合する方法を紹介します。 PHP. 正規表現の記述とIDカード番号形式の制限に注意する必要があります。強力な文字列一致ツールとして、正規表現は PHP で広く使用されています。

以上がPHPで正規表現を使用してID番号と生年月日を一致させる方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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