ホームページ > バックエンド開発 > PHPチュートリアル > PHP 正規表現を使用して州の証明書番号を確認する方法

PHP 正規表現を使用して州の証明書番号を確認する方法

PHPz
リリース: 2023-06-24 15:04:01
オリジナル
1122 人が閲覧しました

インターネットの発展に伴い、個人情報の漏洩は無視できない問題となっています。たとえば、ID 番号は、さまざまな目的で提供する必要がある重要な身分証明書の 1 つです。しかし、ID番号が悪用されたり、漏洩されたりすると、私たちの生活に多大な支障をきたすことになります。個人情報の保護を強化するには、ユーザーが入力した ID 番号が正当なものであるかどうかを検証するプログラムを作成することができ、PHP の正規表現が一般的な方法です。

1. ID 番号の構成規則
正規表現を使用して ID 番号を検証する前に、まず中国語の ID 番号の構成規則を理解しましょう:

1.18 桁の ID 証明書番号17 桁と 1 つのチェック コードで構成されます;
2. 最初の 6 桁は地域の行政区画コードです;
3. 7 ~ 14 桁は生年月日です (例: 870905 は 1987 年生まれを意味します) 2018年9月5日付け;
4. 15桁目から17桁目は地方戸籍管理課に登録された順番を表す通し番号;
5. 18桁目はチェックコード、ID カードの正確性を確認するために使用されます。

2. PHP 正規表現を使用して ID 番号を確認します

PHP では、preg_match() 関数を使用して正規表現を照合します。以下は、正規表現を使用して ID 番号を検証する PHP コードです:

function validateIDCard($id_card)
{
    //正则表达式
    $reg = '/^d{17}[0-9x]$/i';
    //匹配
    if(preg_match($reg, $id_card))
    {
        //校验码验证
        $arr = str_split($id_card);
        $last = strtolower($arr[17]) == 'x' ? 10 : $arr[17];
        $card_sum = 0;
        $wi = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
        for($i = 0; $i < 17; $i++)
        {
            $card_sum += $arr[$i] * $wi[$i];
        }
        $card_sum %= 11;
        $card_sum = 12 - $card_sum;
        if($card_sum == 10)
        {
            $card_sum = 'x';
        }
        if($card_sum == strtolower($arr[17]))
        {
            return true;
        }
    }
    return false;
}
ログイン後にコピー

このコードでは、最初に正規表現 $reg を定義します。この正規表現では、^d {17}[0- 9x]$ は 18 桁の ID 番号に一致します。ここで、d は数値を表し、{17} は 17 桁の一致を表し、[0-9x] は最後の桁が数字または文字 x であることを表します。

次に、preg_match() 関数を使用して通常のマッチングを実行します。照合が成功すると、後続の確認コードの検証が続行されます。チェックコードの照合は主に各桁の積に一定の係数を掛けて最終的に照合するもので、チェックコードが正しければID番号が正しいことになります。

3. まとめ

ID 番号が正しいかどうかは非常に重要で、間違っていると私たちの生活に多大な支障をきたすことになります。プログラムを書くことで、ユーザーが入力したID番号が正しいかどうかを検証することができます。この記事では、PHP の正規表現を使用して ID 番号を検証する方法を紹介しますので、この記事が皆様のお役に立てれば幸いです。

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

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