PHP 验证身份证是否合法的函数

网络编程 2025-03-29 17:25www.168986.cn编程入门

验证身份证合法性的PHP函数详解

亲爱的开发者朋友们,你是否曾为验证身份证号的合法性而苦恼?今天,让我们一起来了解一个实用的PHP函数,它可以帮助我们轻松验证身份证是否合法。让我们跟随狼蚁网站SEO优化的步伐,一起这个函数的世界吧!

接下来,请允许我为大家展示这个函数:

function is_idcard($id) {

// 将输入的身份证号转换为大写形式

$id = strtoupper($id);

// 定义正则表达式,用于匹配15位和18位身份证号

$regx = "/(^\d{15}$)|(^\d{17}([0-9]|X)$)/";

// 初始化一个空数组用于存储匹配结果

$arr_split = array();

// 使用正则表达式进行初步匹配

if(!preg_match($regx, $id)) {

return FALSE; // 如果不匹配,返回FALSE

}

// 检查身份证位数为15位的情况

if(strlen($id) == 15) {

// 定义正则表达式用于拆分15位身份证号各部分

$regx = "/^(\d{6})+(\d{2})+(\d{2})+(\d{2})+(\d{3})$/";

// 执行匹配操作,并将结果存储在$arr_split数组中

preg_match($regx, $id, $arr_split);

// 检查生日是否合法

$dtm_birth = "19".$arr_split[2] . '/' . $arr_split[3]. '/' .$arr_split[4];

if(!strtotime($dtm_birth)) {

return FALSE; // 如果生日不合法,返回FALSE

} else {

return TRUE; // 如果通过验证,返回TRUE

}

} else { // 检查身份证位数为18位的情况

// 定义正则表达式用于拆分18位身份证号各部分

$regx = "/^(\d{6})+(\d{4})+(\d{2})+(\d{2})+(\d{3})([0-9]|X)$/";

// 执行匹配操作,并将结果存储在$arr_split数组中

preg_match($regx, $id, $arr_split);

// 获取生日信息

$dtm_birth = $arr_split[2] . '/' . $arr_split[3]. '/' .$arr_split[4];

// 检查生日是否合法

if(!strtotime($dtm_birth)) {

return FALSE; // 如果生日不合法,返回FALSE

} else {

// 检验18位身份证的校验码是否正确

// 校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10

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

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

$sign = 0;

for ($i = 0; $i < 17; $i++) { // 计算校验码

$b = (int) $id{$i}; // 获取当前位的数值

$w = $arr_int[$i]; // 获取当前位的权重因子

$sign += $b $w; // 计算加权和

}

$n = $sign % 11; // 计算余数

$val_num = $arr_ch[$n]; // 获取校验码字符

if ($val_num != substr($id,17, 1)) { // 如果校验码不匹配,返回FALSE } else { return TRUE; } // 如果通过验证,返回TRUE } } } 以上就是本文的全部内容。这个函数能够帮助我们轻松验证身份证号的合法性,无论是传统的纸质文件还是电子文档的处理。希望本文的内容对大家的学习或工作能带来一定的帮助。也希望大家多多支持狼蚁SEO!让我们一起学习进步,共同提升网站的优化效果!如果您有任何疑问或建议,请随时与我们联系。感谢大家的阅读和支持!祝大家工作顺利,生活愉快!同时请多多关注我们的网站,获取更多有价值的信息和资讯。以上代码适用于PHP环境,您可以将其集成到您的项目中。如有需要,请自行调整代码以适应您的项目需求。再次感谢大家的支持

上一篇:利用Javascript实现BMI计算器 下一篇:没有了

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by