PHP正規表現を使用してIDカードの形式を確認する方法

PHPz
リリース: 2023-06-24 14:18:01
オリジナル
1439 人が閲覧しました

ID カードは重要な書類であり、Web サイトやアプリなどのアプリケーションでは、ユーザーが入力した ID 番号が仕様を満たしているかどうかを確認する必要があることがよくあります。 PHP は、この機能を実現するための非常に便利な方法、つまり正規表現を使用する方法を提供します。

この記事では、PHP 正規表現を使用して ID 番号の正しい形式を確認する方法を紹介します。

1. ID カード番号の形式

PHP 正規表現を使用して ID カード番号の形式を確認する前に、まず ID カード番号の形式規則を理解する必要があります。中国の ID カード番号形式は合計 18 桁で、最初の 17 桁は数字、最後の桁はチェック コード (数字または大文字の場合があります) です。

具体的な規定は次のとおりです。

  1. 最初の6桁は住所コードで、戸籍地の行政区分コードを示します。
  2. 次は、YYYYMMDD 形式の 8 桁の生年月日です。
  3. 次の 4 桁はシーケンス コードで、同じ住所コード領域での出生のシーケンス番号を示します。最後の桁は性別識別子です。奇数が男性、偶数が女性です。
  4. 最後の桁はチェック コードで、数字または文字 X を使用できます。

ID 番号の形式がわかったので、PHP 正規表現を使用してその正確さを検証できます。

2. 正規表現の検証

通常、正規表現の検証には preg_match 関数が使用され、その構文は次のとおりです:

preg_match($pattern, $subject);
ログイン後にコピー

このうち、$pattern は正規表現を表します$subject は必要な検証文字列を表します。一致が成功した場合は 1 を返し、それ以外の場合は 0 を返します。

次に、ID 番号の形式を検証できる正規表現を構築する必要があります。具体的な実装方法は次のとおりです。

  1. まず、数値を照合するには d を使用し、X または x または数値を照合するには [xXd] を使用します。
  2. 次に、{18} を使用して 18 回繰り返すことを示します。
  3. 次に、最初の 6 桁に間隔制限を追加し、正規表現 /^([1-9]d{5})/ を使用して、最初の桁が 1 ~ 9 で次の 5 桁であることを示します。は任意の数値です。
  4. 正規表現 /(d{4})([0-9]{2})([0-9]{2})/ を使用して、8 桁の生年月日に間隔制限を追加します。 、最初の 4 桁が任意の数値、最後の 2 桁の範囲が 00 ~ 99、最後の 2 桁も 00 ~ 99 であることを示します。
  5. シーケンス コードに正規表現 /(d{3})(d{3})(d{2})(d[xXd])/ を使用して、最初の 3 桁が任意の数値であることを示します中央の 3 桁は任意の数字、最後の 2 桁も任意の数字、最後の桁は数字または文字 X です。

要約すると、最終的な正規表現を取得できます:

/^([1-9]d{5})(d{4})([0-9]{2})([0-9]{2})(d{3})(d{3})(d{2})(d[xXd])$/
ログイン後にコピー

PHP 正規表現を使用して ID 番号を確認するには、preg_match 関数が必要です。コード例は次のとおりです:

function check_id_card($id_card) {
    // 加上正则表达式
    $reg = '/^([1-9]d{5})(d{4})([0-9]{2})([0-9]{2})(d{3})(d{3})(d{2})([dxX])$/';
    if (preg_match($reg, $id_card, $matches)) {
        // 校验地址码
        if (!check_address_code($matches[1])) {
            return false;
        }
        // 校验出生日期
        if (!check_birthday($matches[2] . "-" . $matches[3] . "-" . $matches[4])) {
            return false;
        }
        // 校验顺序码
        if (!check_order_code($matches[5])) {
            return false;
        }
        // 校验校验码
        if (!check_verify_code($matches[0])) {
            return false;
        }
        return true;
    }
    return false;
}
ログイン後にコピー

このうち、check_address_code、check_birthday、check_order_code、check_verify_code などの関数は、それぞれ住所コード、生年月日、シーケンス コード、チェック コードの正確性を検証するために使用され、仕様に従って実装する必要があります。状況。

3. 概要

上記の方法により、PHP 正規表現を使用して ID 番号が正しいことを検証できます。 ID 番号の検証は形式だけの問題ではなく、住所コードが合法であるかどうか、生年月日が妥当な範囲内であるかどうか、シーケンス コードの性別識別子であるかどうかなども考慮する必要があることに注意してください。したがって、コードの実装では、検証結果の正確性と信頼性を確保するために多くの要素を考慮する必要があります。

以上がPHP正規表現を使用してIDカードの形式を確認する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート