身份证号码认证
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));