php 验证身份号码 写一个例子
时间: 2024-10-17 19:09:12 浏览: 20
在PHP中验证身份证号码通常涉及到正则表达式的使用,因为身份证号码有固定的长度和特定的校验规则。下面是一个简单的例子,展示了如何使用PHP检查中国大陆居民身份证号码的有效性:
```php
function validate_id_number($id_number) {
// 中国大陆身份证号码由18位数字组成,分为6、7、9三个部分,中间有时包含字符X
if (preg_match('/^(\d{6})(\d{4})((0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])|19\d{2}(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|30))(\d|[Xx]{1})$/', $id_number, $matches)) {
// 检查最后一位校验码是否正确(根据第17位数字计算)
$checksum = sum(array_slice(explode(' ', strrev(base_convert($matches[1] . $matches[2], 10, 16))), 0, 15)) % 11;
$last_char = strtoupper(chr(65 + $checksum)); // A~J对应1到10
return ($last_char == substr($id_number, -1) || $last_char == 'X') && strlen($id_number) == 18;
}
return false;
}
$id_to_validate = "123456789012345678";
if (validate_id_number($id_to_validate)) {
echo "身份证号码有效.";
} else {
echo "身份证号码无效.";
}
阅读全文