亚洲免费乱码视频,日韩 欧美 国产 动漫 一区,97在线观看免费视频播国产,中文字幕亚洲图片

      1. <legend id="ppnor"></legend>

      2. 
        
        <sup id="ppnor"><input id="ppnor"></input></sup>
        <s id="ppnor"></s>

        php驗證身份證號碼正確性的函數(shù)

        字號:


            這篇文章主要為大家分享了兩段php驗證身份證號碼是否正確的函數(shù),感興趣的小伙伴們可以參考一下
            身份證驗證最簡單的就是判斷長度了,當然這種非常簡單破了如果要更規(guī)則一點我們需要對身份證號碼進行一些按生成規(guī)則驗證了,下面整理了一些函數(shù)我們來看看。
            例子,今天分享一個php驗證身份證號碼是否正確函數(shù).
            /********************php驗證身份證號碼是否正確函數(shù)*********************/
            function is_idcard( $id ) 
            { 
              $id = strtoupper($id); 
              $regx = "/(^\d{15}$)|(^\d{17}([0-9]|X)$)/"; 
              $arr_split = array(); 
              if(!preg_match($regx, $id)) 
              { 
                return FALSE; 
              } 
              if(15==strlen($id)) //檢查15位 
              { 
                $regx = "/^(\d{6})+(\d{2})+(\d{2})+(\d{2})+(\d{3})$/"; 
                @preg_match($regx, $id, $arr_split); 
                //檢查生日日期是否正確 
                $dtm_birth = "19".$arr_split[2] . '/' . $arr_split[3]. '/' .$arr_split[4]; 
                if(!strtotime($dtm_birth)) 
                { 
                  return FALSE; 
                } else { 
                  return TRUE; 
                } 
              } 
              else      //檢查18位 
              { 
                $regx = "/^(\d{6})+(\d{4})+(\d{2})+(\d{2})+(\d{3})([0-9]|X)$/"; 
                @preg_match($regx, $id, $arr_split); 
                $dtm_birth = $arr_split[2] . '/' . $arr_split[3]. '/' .$arr_split[4]; 
                if(!strtotime($dtm_birth)) //檢查生日日期是否正確 
                { 
                  return FALSE; 
                } 
                else
                { 
                  //檢驗18位身份證的校驗碼是否正確。 
                  //校驗位按照ISO 7064:1983.MOD 11-2的規(guī)定生成,X可以認為是數(shù)字10。 
                  $arr_int = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); 
                  $arr_ch = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'); 
                  $sign = 0; 
                  for ( $i = 0; $i < 17; $i++ ) 
                  { 
                    $b = (int) $id{$i}; 
                    $w = $arr_int[$i]; 
                    $sign += $b * $w; 
                  } 
                  $n = $sign % 11; 
                  $val_num = $arr_ch[$n]; 
                  if ($val_num != substr($id,17, 1)) 
                  { 
                    return FALSE; 
                  } //phpfensi.com 
                  else
                  { 
                    return TRUE; 
                  } 
                } 
              } 
            } 
            調(diào)用身份證驗證函數(shù)
             $idc=is_idcard("身份證號碼"); 
            if($idc){echo "正確";}else{echo "錯誤";}
            例子二:
            function validation_filter_id_card($id_card){ 
             if(strlen($id_card)==18){ 
             return idcard_checksum18($id_card); 
             }elseif((strlen($id_card)==15)){ 
             $id_card=idcard_15to18($id_card); 
             return idcard_checksum18($id_card); 
             }else{ 
             return false; 
             } 
            } 
            // 計算身份證校驗碼,根據(jù)國家標準GB 11643-1999 
            function idcard_verify_number($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ī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; 
            } 
            // 將15位身份證升級到18位 
            function idcard_15to18($idcard){ 
             if(strlen($idcard)!=15){ 
             return false; 
             }else{ 
             // 如果身份證順序碼是996 997 998 999,這些是為百歲以上老人的特殊編碼 
             if(array_search(substr($idcard,12,3),array('996','997','998','999')) !== false){ 
              $idcard=substr($idcard,0,6).'18'.substr($idcard,6,9); 
             }else{ 
              $idcard=substr($idcard,0,6).'19'.substr($idcard,6,9); 
             } 
             } 
             $idcard=$idcard.idcard_verify_number($idcard); 
             return $idcard; 
            } 
            // 18位身份證校驗碼有效性檢查 
            function idcard_checksum18($idcard){ 
             if(strlen($idcard)!=18){ 
             return false; 
             } 
             $idcard_base=substr($idcard,0,17); 
             if(idcard_verify_number($idcard_base)!=strtoupper(substr($idcard,17,1))){ 
             return false; 
             }else{ 
             return true; 
             } 
            } 
            調(diào)用方法如:validation_filter_id_card('身份證號碼');
            以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助