Home > Backend Development > PHP Tutorial > How to verify the check code of the ID card number using PHP regular expression

How to verify the check code of the ID card number using PHP regular expression

WBOY
Release: 2023-06-24 10:58:02
Original
1805 people have browsed it

The ID number is an important document that people often use in daily life, and the verification of the last check code in the ID number is an important part of whether the ID number is legal. When using PHP programming, we can use regular expressions to verify the check code in the ID number to ensure the validity of the ID number. The following will introduce the method of verifying the check code of the ID card number using PHP regular expressions.

  1. Format of ID number

First of all, we need to understand the format of ID number. The ID card number consists of 18 digits and letters, of which the first 17 digits represent province, city, county, date of birth and other information, and the last digit is a check code. The calculation rules of the check code are as follows:

  1. Multiply the first 17 digits of the ID number by the corresponding weight factor in sequence, that is, the weight factor of the i-th digit is Wi.
  2. Add these 17 products to get S.
  3. The check code N is the remainder of 11 minus S divided by 11, where X represents 10.
  4. Writing of regular expressions

With the above basic knowledge, we can write regular expressions to verify ID numbers. The following is a sample code:

function checkIDCard($id_card){
    $pattern = '/^d{6}(19|20)d{2}(0d|1[0-2])([0-2]d|3[0-1])d{3}[0-9X]$/';
    if(preg_match($pattern, $id_card)){
        $wi = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
        $ai = str_split(substr($id_card, 0, 17));
        $n = 0;
        for($i=0; $i<17; $i++){
            $n += $wi[$i] * $ai[$i];
        }
        $c = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
        $check_code = $c[$n % 11];
        return $check_code == substr($id_card, -1);
    }
    return false;
}

$id_card = '33010219950917413X';
if(checkIDCard($id_card)){
    echo '身份证号码校验成功';
}else{
    echo '身份证号码校验失败';
}
Copy after login

In the above regular expression, d means matching numbers, {6} means matching 6 times, (19|20)d{2} means matching numbers starting with 19 or 20 4 digits, (0d|1[0-2]) means matching the month from 01 to 12, ([0-2]d|3[0-1]) means matching the date from 01 to 31, d{3} means Match three more numbers, [0-9X]$ means it ends with a number or X. In this way, the ID number can be effectively matched.

  1. Testing and Verification

Finally, we can test whether our code works. We can change the verification code of the ID card number to check whether the verification function of the code is normal. For example:

$id_card = '330102199509174133';
Copy after login

or:

$id_card = '330102199509174139';
Copy after login

The check codes of these two ID numbers are wrong and should not pass the verification. And when we run the code, we will see that the ID number verification failure result is output, proving that our code can work normally.

In short, the method of using PHP regular expression to verify the check code of the ID number is relatively simple. You only need to write an appropriate regular expression and related functions to easily complete the verification of the ID number. Verification work.

The above is the detailed content of How to verify the check code of the ID card number using PHP regular expression. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template