国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

php驗證身份證號碼正確性的函數

2024-05-04 23:48:30
字體:
來源:轉載
供稿:網友

身份證驗證最簡單的就是判斷長度了,當然這種非常簡單破了如果要更規則一點我們需要對身份證號碼進行一些按生成規則驗證了,下面整理了一些函數我們來看看。

例子,今天分享一個php驗證身份證號碼是否正確函數.

/********************php驗證身份證號碼是否正確函數*********************/ 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的規定生成,X可以認為是數字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;       }     }   }  } 

調用身份證驗證函數
 $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;  } } // 計算身份證校驗碼,根據國家標準GB 11643-1999 function idcard_verify_number($idcard_base){  if(strlen($idcard_base)!=17){  return false;  }  //加權因子  $factor=array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2);  //校驗碼對應值  $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;  } } 

調用方法如:validation_filter_id_card('身份證號碼');

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。

 


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 宜宾市| 高阳县| 松桃| 新沂市| 博客| 和平县| 治县。| 鱼台县| 甘德县| 周口市| 古蔺县| 含山县| 游戏| 肇源县| 贡嘎县| 东乡族自治县| 沂南县| 保定市| 沽源县| 二连浩特市| 诸暨市| 平原县| 连云港市| 习水县| 徐闻县| 七台河市| 曲阳县| 江阴市| 宁海县| 武鸣县| 静宁县| 西乌珠穆沁旗| 沁阳市| 内乡县| 杭锦后旗| 柳林县| 保靖县| 中超| 商南县| 瑞金市| 鲁甸县|