login每天学习一点点,每天进步一点点.
当前位置:首页 >> php身份证效验位 效验规则

php身份证效验位 效验规则

2018-07-06 10:47:37  |  分类: Php |  标签: 阅读(343)评论(0)
    public function id_card(){
        $id_card = '360822197801180255';
        $z       = substr($id_card,17);
        $xishu   = array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2);
        $a = substr($id_card,0,17);
        $b = str_split($a);

        $c = null;$d = null;
        foreach ($xishu as $key => $value) {$c[] = $b[$key]*$value;}
        foreach ($c as $key) {$d = $d + $key;}
        $e = $d % 11 ;

        switch($e){ 
        case 0: $e = 1;break; 
        case 1: $e = 0;break; 
        case 2: $e = "X";break; 
        case 3: $e = 9;break; 
        case 4: $e = 8;break; 
        case 5: $e = 7;break; 
        case 6: $e = 6;break; 
        case 7: $e = 5;break; 
        case 8: $e = 4;break; 
        case 9: $e = 3;break; 
        case 10: $e = 2;break; 
        default: echo "号码不在规则内"; 
        } 

        if ($e == $z) {
            echo('身份证号码正确!');
        }else{
            echo('身份证号码错误!');
        }


    }

18位身份证号码组成ddddddyyyymmddxxsp

dddddd为6位的地方代码,根据这6位可以获得该身份证号所在地。

yyyy为4位的年份代码,是身份证持有人的出身年份。

mm为2位的月份代码,是身份证持有人的出身月份。

dd为2位的日期代码,是身份证持有人的出身日。

xx为2位的顺序码,这个是随机数。

s为1位的性别代码,奇数代表男性,偶数代表女性。

最后一位为校验码,以上代码就是效验规则。

上一篇:ubuntu使用nmap查询端口 下一篇:ThinkPHP5 的视图$view->fetch()和$view->display()的区别

猜你喜欢

发表评论:

0.229510s