php怎么看身份证
时间 : 2023-03-30 08:40:02声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性

在 PHP 中,可以通过正则表达式来验证身份证号码的有效性,以下是具体实现:

```php

function is_valid_id_number($id_number) {

$pattern = '/^\d{17}[\dXx]$/';

if (!preg_match($pattern, $id_number)) {

return false;

}

$digits = str_split($id_number);

$weights = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);

$checksums = array(1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2);

$sum = 0;

for ($i = 0; $i < 17; $i++) {

$sum += $digits[$i] * $weights[$i];

}

$mod = $sum % 11;

if ($checksums[$mod] != strtoupper($digits[17])) {

return false;

}

return true;

}

上述代码中,首先使用正则表达式检查身份证号码是否符合18位数字或大写字母“X”的格式要求。然后,计算出身份证号码前17位数字的加权和,并将其除以11求余数。最后,验证得到的校验码是否与身份证号码的最后一位相同。

使用上述函数,可以很方便地验证身份证号码的有效性,如下所示:

```php

if (is_valid_id_number('110101200001013093')) {

echo 'Valid id number';

} else {

echo 'Invalid id number';

}

在实际使用中,也可以结合其他验证方式,如长度判断、地区码校验等,来提高身份证号码的验证准确性。

要验证身份证号码是否合法,可以使用PHP内置的函数进行验证。PHP语言中可以使用正则表达式匹配身份证号码的格式是否正确,只有匹配成功才表示身份证号码合法。

下面是一个简单的身份证号码验证的PHP代码示例:

function checkIdCard($idcard) {

// 加权因子

$factor = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1);

// 校验位

$verify_number = array('1','0','X','9','8','7','6','5','4','3','2');

// 长度15位或18位

if (strlen($idcard) != 15 && strlen($idcard) != 18) {

return false;

}

// 18位身份证需要验证最后一位校验位

if (strlen($idcard) == 18) {

$idcard_base = substr($idcard, 0, 17);

$idcard_verify_number = substr($idcard, 17, 1);

$sum = 0;

for ($i = 0; $i < 17; $i++) {

$sum += substr($idcard_base, $i, 1) * $factor[$i];

}

$mod = $sum % 11;

if ($verify_number[$mod] != strtoupper($idcard_verify_number)) {

return false;

}

}

return true;

}

该函数首先判断身份证号码的长度是否为15位或18位,如果不是则直接返回false。然后对于18位身份证需要验证最后一位校验位是否正确,通过一些加权运算和校验位的验证,如果验证失败则返回false,否则返回true。

使用方法:

$idcard = '31010119800101001X';

if (checkIdCard($idcard)) {

echo '该身份证号码合法!';

} else {

echo '该身份证号码不合法!';

}

在实际使用时,仅仅验证身份证号码的格式并不能完全保证其可靠性,可能还需要与公安部门进行进一步的验证才能确定其真实性。