<?php
function check18($sfz)
{
$x_yan=array(1,0,'X','9',8,7,6,5,4,3,2);//我是最后一位的
$xs_sf=array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2);//我是身份证的加权
$sfz_ar=array($sfz[0],$sfz[1],$sfz[2],$sfz[3],$sfz[4],$sfz[5],$sfz[6],$sfz[7],$sfz[8],$sfz[9],$sfz[10],$sfz[11],$sfz[12],$sfz[13],$sfz[14],$sfz[15],$sfz[16]);//我是身份证的分割后的数组
$sum=array();//加权以后的数组
for($i=0;$i<17;++$i)
{
$sum[$i]=$sfz_ar[$i]*$xs_sf[$i];//把2个数组的乘积一个个保存到数组中
}
$sum_check=array_sum($sum)%11;//算出sum数组中所有元素的和,并且除以11求余保存为$sum_check
$qc=$x_yan[$sum_check];//用求出来的余数去$x_yan数组中寻找
if($sfz[17] == $qc)//身份证最后一位和刚才的$x_yan中的值是否一致
return true;//一致返回真值,18位身份证合法
else
return false;//否则返回假,18位身份证不合法
}
?>
评论0
最新资源