身份证号码认证
1、18位身份证构成
a、身份证第0~6位是地址码;
b、身份证第7~14位是生日码
c、身份证第15~17位是顺序码
d、身份证第18位是校验码
2、验证规则
1、17位的加权码,顺序不可修改
7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2
2、求和。加权与身份证一一对应求乘积再求和。
3、求模。总和同11的模
4、模与校验码比较,对应上就是符合。
下面是php代码
/**
* s身份证号码验证
* @param [type] $value [description]
* @return [type] [description]
*/
function validateCode($value)
{
/*加权值*/
$_weighting = ["7","9","10","5","8","4","2","1","6","3","7","9","10","5","8","4","2"];
/*校验码*/
$_validateCode = ["1","0","X","9","8","7","6","5","4","3","2"];
$icode = str_split($value,1);
$validateCode = array_pop($icode);
$sum = 0;
foreach($icode as $k => $i){
$sum += bcmul($i,$_weighting[$k]);
}
$mod = $sum % 11;
if($_validateCode[$mod] == $validateCode)
return true;
return false;
}
$identify = '440811198907109992';
var_dump(validateCode($identify));

浙公网安备 33010602011771号