验证身份证是否合法的函数
2017-02-09 11:07
274 查看
function is_idcard( $id ) { $id = strtoupper($id); $regx = "/(^\d{15}$)|(^\d{17}([0-9]|X)$)/"; $arr_split = array(); if(!preg_match($regx, $id)) { return FALSE; } if(15==strlen($id)) //检查15位 { $regx = "/^(\d{6})+(\d{2})+(\d{2})+(\d{2})+(\d{3})$/"; @preg_match($regx, $id, $arr_split); //检查生日日期是否正确 $dtm_birth = "19".$arr_split[2] . '/' . $arr_split[3]. '/' .$arr_split[4]; if(!strtotime($dtm_birth)) { return FALSE; } else { return TRUE; } } else //检查18位 { $regx = "/^(\d{6})+(\d{4})+(\d{2})+(\d{2})+(\d{3})([0-9]|X)$/"; @preg_match($regx, $id, $arr_split); $dtm_birth = $arr_split[2] . '/' . $arr_split[3]. '/' .$arr_split[4]; if(!strtotime($dtm_birth)) //检查生日日期是否正确 { return 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)) { return FALSE; } else { return TRUE; } } } }
相关文章推荐
- PHP 验证身份证是否合法的函数
- oracle自定义函数验证身份证是否合法
- JavaScript验证18位或者15位身份证号码是否合法
- ios验证身份证是否合法
- C#实现验证身份证是否合法的方法
- php提取身份证号码中的生日日期以及验证是否为成年人的函数
- 如何用javascript正则表达式验证身份证号码是否合法
- JavaScript验证18位或者15位身份证号码是否合法
- php提取身份证号码中的生日日期以及验证是否为未成年人的函数
- PHP提取身份证号码中的生日并验证是否成年的函数
- JavaScript正则表达式验证身份证号码是否合法(两种方法)
- 验证身份证是否合法的c#代码
- 验证身份证号码是否合法
- PHP提取身份证号码中的生日并验证是否成年的函数
- C语言身份证信息查询系统(可验证输入身份证是否合法)【已会】
- oracle 函数 验证身份证号是否正确
- 验证身份证号是否合法的小程序(正则表达式)
- 验证身份证是否合法算法
- arguments对象验证函数的参数是否合法