作者:ab15b7k1_198 | 来源:互联网 | 2018-03-20 11:42
身份证号码校验
function idcard_check($id)
{
if ( ! preg_match('/^\d{18}$|^\d{17}X$/', $id) ) {
return false;
}
$id = str_split($id);
$x = array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2);
$y = array(1,0,'X',9,8,7,6,5,4,3,2);
$sum = 0;
foreach ($x as $k=>$v) {
$sum += $id[$k]*$v;
}
return (string)$y[$sum%11]===$id[count($id)-1];
}
var_dump(idcard_check('身份证号码 末尾如果是X要大写'));
2. 补充一个js版本
function idcard_check(id)
{
if(!/^\d{18}$|^\d{17}X$/.test(id)) return false;
var code = [1,0,'X',9,8,7,6,5,4,3,2];
var sum = 0;
for(var i=17; i>0; i--){
sum += id[17-i] * Math.pow(2,i)%11;
}
return id[17]==code[sum%11];
}
console.log(idcard_check('身份证号码 末尾X需大写 必须是字符串类型'));
以上就是身份证号码校验的内容,更多相关内容请关注PHP中文网(www.php1.cn)!