PHP 验证身份证是否合法的函数
验证身份证合法性的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环境,您可以将其集成到您的项目中。如有需要,请自行调整代码以适应您的项目需求。再次感谢大家的支持
编程语言
- PHP 验证身份证是否合法的函数
- 利用Javascript实现BMI计算器
- Yii2.0框架实现带分页的多条件搜索功能示例
- jackson解析json字符串,首字母大写会自动转为小写
- php实现Mysql简易操作类
- 升级 PHP7.1 后 openssl 解密 mcrypt AES 数据不兼容问题
- 解析php addslashes()与addclashes()函数的区别和比较
- GridView使用CommandField删除列实现删除时提示确认框
- aspnet_regiis.exe命令使用方法
- ASP.NET服务器端控件RadioButtonList,DropDownList,Che
- 正则表达式与数学(方程式、线性方程)
- SQLServer CONVERT 函数测试结果
- PHPStorm+XDebug进行调试图文教程
- PHP 数组基本操作方法详解
- mysql 8.0.17 解压版安装配置方法图文教程
- 微信小程序之批量上传并压缩图片的实例代码