温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

验证shenfenzheng合法性

发布时间:2020-06-19 13:39:36 阅读:387 作者:素颜猪 栏目:开发技术
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

1.实现代码如下

/**
     * 验证合法性
     */
    function checkIdCard($idcard){
        $City array(11=>"北京",
        	12=>"天津",
        	13=>"河北",
        	14=>"山西",
        	15=>"内蒙古",
        	21=>"辽宁",
        	22=>"吉林",
        	23=>"黑龙江",
        	31=>"上海",
        	32=>"江苏",
        	33=>"浙江",
        	34=>"安徽",
        	35=>"福建",
        	36=>"江西",
        	37=>"山东",
        	41=>"河南",
        	42=>"湖北",
        	43=>"湖南",
        	44=>"广东",
        	45=>"广西",
        	46=>"海南",
        	50=>"重庆",
        	51=>"四川",
        	52=>"贵州",
        	53=>"云南",
        	54=>"西藏",
        	61=>"陕西",
        	62=>"甘肃",
        	63=>"青海",
        	64=>"宁夏",
        	65=>"新疆",
        	71=>"台湾",
        	81=>"香港",
        	82=>"澳门",
        	91=>"国外");
        $iSum 0;
        $idCardLength strlen($idcard);
        //长度验证
        if(!preg_match('/^\d{17}(\d|x)$/i',$idcardand !preg_match('/^\d{15}$/i',$idcard)){
              return false;
        }
        //地区验证
        if(!array_key_exists(intval(substr($idcard,0,2)),$City)){
             return false;
        }
        // 15位验证生日,转换为18位
        if ($idCardLength == 15){
              $sBirthday '19'.substr($idcard,6,2).'-'.substr($idcard,8,2).'-'.substr($idcard,10,2);
              $d new DateTime($sBirthday);
              $dd $d->format('Y-m-d');
              if($sBirthday != $dd){
                  return false;
              }
              $idcard substr($idcard,0,6)."19".substr($idcard,6,9);//15to18
              $Bit18 getVerifyBit($idcard);//算出第18位校验码
              $idcard $idcard.$Bit18;
        }
        // 判断是否大于2078年,小于1900年
        $year substr($idcard,6,4);
        if ($year<1900 || $year>2078 ){
            return false;
        }
        //18位处理
        $sBirthday substr($idcard,6,4).'-'.substr($idcard,10,2).'-'.substr($idcard,12,2);
        $d new DateTime($sBirthday);
        $dd $d->format('Y-m-d');
        if($sBirthday != $dd){
            return false;
        }

        //编码规范验证
        $idcard_base substr($idcard,0,17);
        if(strtoupper(substr($idcard,17,1)) != $this->getVerifyBit($idcard_base)){
             return false;
        }

        return $idcard;
    }

    // 计算校验码,根据国家标准GB 11643-1999
    function getVerifyBit($idcard_base){
        if(strlen($idcard_base) != 17){
            return false;
        }
        //加权因子
        $factor array(7910584216379105842);
        //校验码对应值
        $verify_number_list array('1''0''X''9''8''7''6''5''4','3''2');
        $checksum 0;
        for ($i 0$i strlen($idcard_base); $i++){
            $checksum += substr($idcard_base$i1) * $factor[$i];
        }
        $mod $checksum 11;
        $verify_number $verify_number_list[$mod];
        
        return $verify_number;
    }

验证shenfenzheng合法性

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI

开发者交流群×