>  기사  >  php教程  >  身份证号码校验

身份证号码校验

PHP中文网
PHP中文网원래의
2016-05-23 08:39:151466검색

身份证号码校验

function idcard_check($id)
{
    if ( ! preg_match('/^\d{18}$|^\d{17}X$/', $id) ) {
        return false;
    }

    $id = str_split($id);
    $x  = array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2);
    $y  = array(1,0,'X',9,8,7,6,5,4,3,2);

    $sum = 0;
    foreach ($x as $k=>$v) {
        $sum += $id[$k]*$v;
    }
    return (string)$y[$sum%11]===$id[count($id)-1];
}

var_dump(idcard_check('身份证号码 末尾如果是X要大写'));

2. 补充一个js版本

function idcard_check(id)
{
    if(!/^\d{18}$|^\d{17}X$/.test(id)) return false;

    var code  = [1,0,'X',9,8,7,6,5,4,3,2];
    var sum = 0;
    for(var i=17; i>0; i--){
        sum += id[17-i] * Math.pow(2,i)%11;
    }
    return id[17]==code[sum%11];
}

console.log(idcard_check('身份证号码 末尾X需大写 必须是字符串类型'));

以上就是身份证号码校验的内容,更多相关内容请关注PHP中文网(www.php.cn)!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.