ホームページ  >  記事  >  バックエンド開発  >  PHP ID 番号が正しいかどうかを確認するコード例

PHP ID 番号が正しいかどうかを確認するコード例

怪我咯
怪我咯オリジナル
2017-07-11 15:35:202619ブラウズ

IDカード番号の構造

IDカード番号は、17桁のボディコードと1ビットのチェックコードで構成される特徴的な組み合わせコードです。

左から右へ、6桁の住所コード、8桁の生年月日コード、3桁のシーケンスコード、1桁のチェックコードの順です。

住所コード(最初の6桁)

は、コーディングオブジェクトオブジェクトの永住地が所在する郡(市、旗、地区)の行政区画コードを表し、GB/T2260の規定に従って実装されます。 。

生年月日コード(7桁目から14桁目)


は、エンコーディングオブジェクトの誕生年、月、日を表します。GB/T7408の規定に従って実装されています。年、月、日のコード。

連番(15~17桁目)


は、同じ住所コードで特定される地域内で同じ年、同じ月、同じ日に生まれた人に割り当てられる連番を表し、連番の奇数が割り当てられます。男性には偶数番号が割り当てられます。

チェックコード(18桁目)


1. 17桁のオントロジーコードの加重加算式


S= SUM(Ai * Wi), i=0, ... , 16, first の重みを合計します。最初の 17 桁。


Ai:i番目のID番号のデジタル値を表します


Wi:i番目の重み係数を表します


Wi:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2

2. モジュール


Y = mod(S, 11)

3. モジュールを通じて対応するチェックコード


Y を取得します: 0 1 2 3 4 5 6 7 8 9 10


コード検証: 1 0 ID 番号");

if($idc){echo "正しい";}else{echo "間違っています";}

例 2:


/********************php验证身份证号码是否正确函数*********************/ 
function is_idcard( $id ) 
{ 
  $id = strtoupper($id); 
  $regx = "/(^\d{15}$)|(^\d{17}([0-9]|X)$)/"; 
  $arr_split = array(); 
  if(!preg_match($regx, $id)) 
  { 
    return FALSE; 
  } 
  if(15==strlen($id)) //检查15位 
  { 
    $regx = "/^(\d{6})+(\d{2})+(\d{2})+(\d{2})+(\d{3})$/"; 
 
    @preg_match($regx, $id, $arr_split); 
    //检查生日日期是否正确 
    $dtm_birth = "19".$arr_split[2] . '/' . $arr_split[3]. '/' .$arr_split[4]; 
    if(!strtotime($dtm_birth)) 
    { 
      return FALSE; 
    } else { 
      return TRUE; 
    } 
  } 
  else      //检查18位 
  { 
    $regx = "/^(\d{6})+(\d{4})+(\d{2})+(\d{2})+(\d{3})([0-9]|X)$/"; 
    @preg_match($regx, $id, $arr_split); 
    $dtm_birth = $arr_split[2] . '/' . $arr_split[3]. '/' .$arr_split[4]; 
    if(!strtotime($dtm_birth)) //检查生日日期是否正确 
    { 
      return FALSE; 
    } 
    else 
    { 
      //检验18位身份证的校验码是否正确。 
      //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。 
      $arr_int = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); 
      $arr_ch = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'); 
      $sign = 0; 
      for ( $i = 0; $i < 17; $i++ ) 
      { 
        $b = (int) $id{$i}; 
        $w = $arr_int[$i]; 
        $sign += $b * $w; 
      } 
      $n = $sign % 11; 
      $val_num = $arr_ch[$n]; 
      if ($val_num != substr($id,17, 1)) 
      { 
        return FALSE; 
      } //phpfensi.com 
      else 
      { 
        return TRUE; 
      } 
    } 
  } 
 
}

以上がPHP ID 番号が正しいかどうかを確認するコード例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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