判断身份证号码是否正确

谭佳成
2017-08-22
(80)

function isIdCard($number) { // 检查是否是身份证号
   $number = getIDCard($number);   // 转化为大写,如出现x
   $number = strtoupper($number);   //加权因子
   $wi = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);   //校验码串
   $ai = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');   //按顺序循环处理前17位
   $sigma = 0;   for ($i = 0;$i < 17;$i++) {    //提取前17位的其中一位,并将变量类型转为实数
    $b = (int) $number{$i};  
    //提取相应的加权因子
    $w = $wi[$i];  
    //把从身份证号码中提取的一位数字和加权因子相乘,并累加
    $sigma += $b * $w;
   }   //计算序号
   $snumber = $sigma % 11;  
   //按照序号从校验码串中提取相应的字符。
   $check_number = $ai[$snumber];  
   if ($number{17} == $check_number) {    return true;
   } else {    return false;
   }
}


如无说明,本站文章均为原创,转载或引用注明来源:https://93jc.cn/article/131.html