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

首頁 > 編程 > PHP > 正文

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

2020-03-22 19:53:23
字體:
來源:轉載
供稿:網友
身份證驗證最簡單的就是判斷長度了,當然這種非常簡單破了如果要更規則一點我們需要對身份證號碼進行一些按生成規則驗證了,下面整理了一些函數我們來看看。例子,今天分享一個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 $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('身份證號碼');以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持phpstudy。PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 略阳县| 浦城县| 华安县| 旌德县| 建阳市| 五河县| 华安县| 蓬溪县| 东兰县| 荣成市| 开阳县| 静乐县| 喜德县| 湟中县| 平乐县| 增城市| 新营市| 宁远县| 西宁市| 沈阳市| 蒙城县| 饶阳县| 临潭县| 雷波县| 怀化市| 天等县| 临江市| 巴林左旗| 永新县| 唐河县| 九台市| 威宁| 绥滨县| 三原县| 泰州市| 疏勒县| 上林县| 婺源县| 恭城| 樟树市| 罗甸县|