Home  >  Article  >  Backend Development  >  php verify ID number

php verify ID number

小云云
小云云Original
2017-12-08 15:41:353236browse

In this article, we share with you the knowledge of verifying ID number in PHP. It is also a small technique. We hope it can help everyone.

The structure of the ID number

The ID number is a characteristic combination code, consisting of a 17-digit body code and It consists of one bit of check code.

The order from left to right is as follows: Six-digit address code, eight-digit date of birth code, three-digit sequence code and one digit Verification code .


Address code (first six digits)

represents the administrative division code of the county (city, banner, district) where the coding object’s permanent residence is located, and shall be implemented in accordance with the provisions of GB/T2260.


Date of birth code (seventh to fourteenth digit)

represents the year, month, and day of the birth of the encoding object. It is implemented in accordance with the provisions of GB/T7408. There is no separator between the year, month, and day codes.


## Sequence code (15th to 17th digit)

represents the sequence number assigned to people born in the same year, month, and day within the area identified by the same address code. Odd numbers of the sequence codes are assigned to males, and even numbers are assigned to females. .


Check code (18th digit)

1. Seventeen-digit ontology code weighted summation formula

S= SUM(Ai * Wi), i=0 , ... , 16, First sum the weights of the first 17 digits.

Ai: Represents the digital value of the ID number at the i-th position

Wi: Represents the i-th position Weighting factor

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

2. Calculate the modulus

Y = mod(S, 11)

3. Get the corresponding check code

Y through the module: 0 1 2 3 4 5 6 7 8 9 10

Verification code: 1 0 #[php] view plain copy

<?php  
function checkIdCard($idcard){  
  // 只能是18位
  if(strlen($idcard)!=18){  
    return false;  
   }  
    // 取出本体码
    $idcard_base = substr($idcard, 0, 17);  
    // 取出校验码
    $verify_code = substr($idcard, 17, 1);  
    // 加权因子
    $factor = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);  
    // 校验码对应值
    $verify_code_list = array(&#39;1&#39;, &#39;0&#39;, &#39;X&#39;, &#39;9&#39;, &#39;8&#39;, &#39;7&#39;, &#39;6&#39;, &#39;5&#39;, &#39;4&#39;, &#39;3&#39;, &#39;2&#39;);  
    // 根据前17位计算校验码
    $total = 0;  
    for($i=0; $i<17; $i++){  
        $total += substr($idcard_base, $i, 1)*$factor[$i];  
    }  
    // 取模
    $mod = $total % 11;  
    // 比较校验码
    if($verify_code == $verify_code_list[$mod]){  
       return true;  
    }else{  
       return false;  
    }  
}  
$idcard = &#39;这里填写要验证的身份证号码&#39;;  
var_dump(checkIdCard($idcard));  
?>

Related recommendations:The perfect way to implement ID card verification js regularity

Use JavaScript to verify ID card

php to verify whether the ID number is correct Example code

The above is the detailed content of php verify ID number. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:Regular knowledge pointsNext article:Regular knowledge points