// 身份证校验码,根据国家标准GB 11643-1999
function validateIdCard($card_number) {
if( strlen($card_number) != 18 ) {
return false;
}
$crad_id_base = substr($card_number, 0, 17);
$crad_id_verify = substr($card_number, -1);
// 加权因子
$factor = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3);
// 校验码对应值
$verify_number_list = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
$checksum = 0;
for( $i = 0; $i < strlen($crad_id_base); $i++ ) {
$checksum += substr($crad_id_base, $i, 1) * $factor[$i % 10];
}
$mod = $checksum % 11;
if( $crad_id_verify == $verify_number_list[$mod] ) {
return true;
}
return false;
}
零五网 - 为热爱技术的人而生!
php完美判断身份证号码是否有效(18位)
0 Previous ArticleLinux中文乱码的解决办法
Next Article JS完美校验身份证号有效性函数(亲测)