Home  >  Article  >  Backend Development  >  How to verify ID number through php

How to verify ID number through php

jacklove
jackloveOriginal
2018-06-09 11:44:426640browse

The structure of the ID number

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

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

Address code (first six digits)

indicates the county (city, banner, The administrative division code of the district) shall be implemented in accordance with the provisions of GB/T2260.

Date of birth code (seventh to fourteenth digit)

Indicates the year and month the coding object was born , day, according to the provisions of GB/T7408, no separators are used between the year, month, and day codes.

Sequence code (15th to 17th digit)

indicates that the addresses identified by the same address code Within the area, sequential numbers are assigned to people born in the same year, month, and day. Odd numbers are assigned to men, and even numbers are assigned to women.

Check code (18th digit)

1. Weighted calculation of the seventeen-digit ontology code And the 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 weighting factor at the i-th position

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


2. Calculation model

Y = mod(S, 11)


3. Obtain the corresponding check code through the modulus

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

Check code: 1 0 X 9 8 7 6 5 4 3 2

Method to verify ID number:

<?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));
?>

This article explains how to verify the ID number through php. For more related content, please pay attention to the php Chinese website.

Related recommendations:

How to get YouTube video information through php

About the solution to php unserialize returning false

How to generate the corresponding array based on the string through php


#

The above is the detailed content of How to verify ID number through php. 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