ID カード番号は中国国民にとって唯一の身分証明書であり、生年月日などの個人識別情報が含まれています。実際のアプリケーションでは、ID 番号の年齢範囲を検証する必要がある場合がありますが、これを実装するには PHP 正規表現が非常に便利です。この記事では、PHP 正規表現を使用して ID 番号の年齢範囲を確認する方法を紹介します。
1. ID カード番号の構造
ID カード番号は 17 文字で構成され、6 つの部分に分かれています: 最初の 2 桁は州コード、中間の 4 桁は都市です。次の 2 桁は年コード、次の 2 桁は月コード、次の 2 桁は日付コード、最後の 1 桁はチェック ディジットです。具体的な構造は以下の通りです。
xxxxxxxxxxxxxxxXY
このうち最初の17桁がID番号本体、XはID番号の最初の17桁の任意の数字、 Y は ID 検証コードであり、その計算方法は国家標準 GB 11643-1999「市民 ID カード番号」の規定を参照できます。
2. 基本的な考え方
ID 番号の年齢確認は、ID 番号から生年月日を取得し、現在の日付と比較することで ID カードの保有期間を計算できます。 . オーナーの年齢。具体的な検証手順は次のとおりです:
1. 正規表現を使用して ID 番号の生年月日を取得します;
2. 生年月日をタイムスタンプに変換します;
3. current 日付から現在のタイムスタンプを計算します;
4. 現在のタイムスタンプと出生タイムスタンプを比較して、ID カード所有者の年齢を取得します;
5. 年齢が指定された範囲内であるかどうかを判断します。
3. 正規表現
PHPのpreg_match関数を利用すると簡単にID番号から生年月日を取得できます。具体的な正規表現は次のとおりです:
/(d{6})(d{4})(d{2})(d{2})d{2}(d)(d|x )/ i
このうち、正規表現の大括弧は、一致する部分文字列を示すために使用されます。大括弧内の d は数字を示し、d{6} は 6 つの数字の一致を示し、d{4} は一致する部分文字列を示します。 4 つの数字の一致など。
4. PHP コードの実装
上記の正規表現を使用すると、preg_match 関数を通じて生年月日を取得できます。具体的な実装コードは以下のとおりです。
function getAgeByIdCard($idCard, $minAge, $maxAge) { // 通过正则表达式获取身份证号码的出生年月日 if (preg_match('/(d{6})(d{4})(d{2})(d{2})d{2}(d)(d|x)/i', $idCard, $matches)) { list(,$birthYear,$birthMonth,$birthDay) = $matches; // 将出生年月日转化为时间戳 $birthTimestamp = strtotime("{$birthYear}-{$birthMonth}-{$birthDay}"); // 计算当前时间戳 $currentTimestamp = time(); // 计算身份证持有者的年龄 $age = floor(($currentTimestamp - $birthTimestamp) / 31536000); // 判断年龄是否在指定范围内 if ($age >= $minAge && $age <= $maxAge) { return true; } } return false; } // 身份证号码 $idCard = "320123199001011234"; // 最小年龄 $minAge = 18; // 最大年龄 $maxAge = 60; // 验证身份证号码是否在指定年龄范围内 if (getAgeByIdCard($idCard, $minAge, $maxAge)) { echo "身份证号码通过验证"; } else { echo "身份证号码不在指定年龄范围内"; }
5. まとめ
この記事では、PHP の正規表現を使用して ID 番号の年齢範囲を確認する方法を紹介します。提供されている正規表現を使用すると、ID 番号から生年月日を簡単に取得できます。次に、PHP のタイムスタンプ関数を使用して生年月日をタイムスタンプに変換し、ID カード所有者の年齢を計算します。この記事を実装することで、実用的なアプリケーションに便利な検証方法を提供できます。
以上がPHP正規表現を使用してID番号の年齢範囲を確認する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。