写一个验证身份证的php函数
时间: 2024-06-12 18:04:48 浏览: 11
以下是一个简单的PHP函数,用于验证身份证号码的有效性:
```php
function validate_id_number($id_number) {
// 判断身份证号码长度是否正确
if (strlen($id_number) != 18) {
return false;
}
// 判断身份证号码格式是否正确
if (!preg_match('/^\d{17}[\dxX]$/', $id_number)) {
return false;
}
// 判断身份证号码最后一位校验码是否正确
$id_arr = str_split($id_number);
$id_sum = 0;
$id_weight = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
$id_check_code = array(1, 0, 'x', 9, 8, 7, 6, 5, 4, 3, 2);
for ($i = 0; $i < 17; $i++) {
$id_sum += $id_arr[$i] * $id_weight[$i];
}
$id_mod = $id_sum % 11;
if ($id_check_code[$id_mod] != strtolower($id_arr[17])) {
return false;
}
// 判断身份证号码中的出生日期是否正确
$id_birthday = substr($id_number, 6, 8);
if (!preg_match('/^\d{4}[01]\d[0123]\d$/', $id_birthday)) {
return false;
}
$id_year = substr($id_birthday, 0, 4);
$id_month = substr($id_birthday, 4, 2);
$id_day = substr($id_birthday, 6, 2);
if (!checkdate($id_month, $id_day, $id_year)) {
return false;
}
// 所有校验都通过,身份证号码有效
return true;
}
```
使用示例:
```php
$id_number = '330326198901011234';
if (validate_id_number($id_number)) {
echo '身份证号码有效';
} else {
echo '身份证号码无效';
}
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)