国产探花免费观看_亚洲丰满少妇自慰呻吟_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教程

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 邛崃市| 长丰县| 商河县| 塔城市| 贺州市| 临安市| 怀仁县| 舞钢市| 文山县| 若尔盖县| 宁海县| 肃南| 丹凤县| 精河县| 饶平县| 疏附县| 丽江市| 济南市| 依兰县| 泽州县| 涟源市| 长岛县| 阿拉善右旗| 苏尼特右旗| 华蓥市| 武川县| 湖州市| 萝北县| 青浦区| 嘉兴市| 齐齐哈尔市| 湖南省| 乐清市| 克拉玛依市| 怀来县| 雷山县| 玉龙| 杭锦旗| 葫芦岛市| 武冈市| 汉源县|