現在の位置: ホーム> 最新記事一覧> PHP正規表現を使ったIDカード番号の正確な確認方法を詳しく解説

PHP正規表現を使ったIDカード番号の正確な確認方法を詳しく解説

M66 2025-10-31

PHP ID番号検証の意味

Web 開発では、ユーザーが入力したデータは通常、特に個人を特定できる情報が含まれる場合、その正確性を保証するために厳密に検証する必要があります。 ID 番号は中国国民の一意の ID であり、固定された構造とコーディング規則があります。 PHP 正規表現を使用して ID カード番号を照合および検証すると、データの精度とシステムのセキュリティを効果的に向上させることができます。

ID番号の構成規則

ID 番号は通常 18 桁で、最初の 6 桁は行政区分コード、7 桁目から 14 桁目は生年月日 (YYYYMMDD 形式)、15 桁目から 17 桁目はシーケンス コード、最後の桁はチェック コード (数字または文字 X) です。これらのルールにより、正規表現を使用して ID 番号の形式が仕様に準拠しているかどうかを判断できます。

PHP正規表現検証ID番号の例

次の PHP コード例は、正規表現を使用して ID 番号の形式が正しいかどうかを確認する方法を示しています。

 <?php
// ID番号を定義する正規表現
$idCardPattern = '/^([1-9]\d{5})(18|19|20)\d{2}(0[1-9]|1[0-2])([0-2]\d|3[01])\d{3}([0-9X])$/';

// 確認するID番号
$idCardNumber = '123456199001012345';

// 使用preg_match一致する関数
if (preg_match($idCardPattern, $idCardNumber)) {
    echo "ID番号の形式が正しい";
} else {
    echo "ID番号フォーマットエラー";
}
?>

上記例では、まずIDカードのフォーマットに一致する正規表現変数$idCardPatternを定義し、次に検証対象のIDカード番号$idCardNumberを定義し、 preg_match()関数で照合を行い、その結果に基づいてプロンプト情報を出力しています。

通常のマッチングルールの詳細説明

この正規表現は、複数の次元から ID 番号を検証します。

  • 最初の 6 桁は、ゼロ以外の数字で構成される市外局番である必要があります。
  • 年の部分は 1800 から 2099 までに制限されます。
  • 月の範囲は 01 から 12 です。
  • 日付部分は 01 から 31 まで使用できます。
  • 最後の桁は数字または文字 X で、チェック コードとして使用されます。

この方法では、準拠していない入力のほとんどを除外できるだけでなく、誤ったデータの送信をある程度防ぐことができます。

応用シナリオと実践的な提案

開発者は、ユーザー登録、実名認証、データ送信などの機能を構築する際に、このメソッドを使用してフォーム検証を実行できます。フロントエンド検証と PHP バックエンド検証を組み合わせると、システムのデータの信頼性とセキュリティを大幅に向上させることができます。検証の包括性を確保するために、実際のアプリケーションでは ID カード検証コード アルゴリズムをさらに組み合わせることが推奨されます。

要約する

この記事では、PHP 正規表現を使用して ID カード番号を確認する完全な方法とコード例を紹介します。規則的なルールを合理的に使用することで、ID カード形式の検証が効率的に実現され、データのセキュリティとシステムの正確性が確実に保証されます。