溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

驗(yàn)證shenfenzheng合法性

發(fā)布時(shí)間:2020-06-19 13:39:36 來源:網(wǎng)絡(luò) 閱讀:377 作者:素顏豬 欄目:開發(fā)技術(shù)

1.實(shí)現(xiàn)代碼如下

/**
     * 驗(yàn)證合法性
     */
    function checkIdCard($idcard){
        $City = array(11=>"北京",
        	12=>"天津",
        	13=>"河北",
        	14=>"山西",
        	15=>"內(nèi)蒙古",
        	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);
        //長度驗(yàn)證
        if(!preg_match('/^\d{17}(\d|x)$/i',$idcard) and !preg_match('/^\d{15}$/i',$idcard)){
              return false;
        }
        //地區(qū)驗(yàn)證
        if(!array_key_exists(intval(substr($idcard,0,2)),$City)){
             return false;
        }
        // 15位驗(yàn)證生日,轉(zhuǎn)換為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位校驗(yàn)碼
              $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;
        }

        //編碼規(guī)范驗(yàn)證
        $idcard_base = substr($idcard,0,17);
        if(strtoupper(substr($idcard,17,1)) != $this->getVerifyBit($idcard_base)){
             return false;
        }

        return $idcard;
    }

    // 計(jì)算校驗(yàn)碼,根據(jù)國家標(biāo)準(zhǔn)GB 11643-1999
    function getVerifyBit($idcard_base){
        if(strlen($idcard_base) != 17){
            return false;
        }
        //加權(quán)因子
        $factor = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
        //校驗(yàn)碼對應(yīng)值
        $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, $i, 1) * $factor[$i];
        }
        $mod = $checksum % 11;
        $verify_number = $verify_number_list[$mod];
        
        return $verify_number;
    }

驗(yàn)證shenfenzheng合法性

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI