检验身份证号是否正确
函数名:
check_id_card_no
/**
* 检验身份证号是否正确
* @param $card_no
* @return bool
*/
function check_id_card_no($card_no)
{
$factor = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); // 前17位的权重
$c = array(1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2); //模11后的对应校验码
$tmp = 0;
for ($i = 0; $i < 17; $i++) {
$tmp += intval($card_no[$i]) * $factor[$i];
}
$calc_last_char = $c [$tmp % 11];
if (substr($card_no, -1) != $calc_last_char) {
return false;
}
return true;
}