2023年10月14日 16:42:22
從網上扒的, 刪掉了一小段無用**, 修改了一行判斷省份的**
1/*2* 身份證號驗證(相容15,18位)3*/
4function checkidentitycode($idcard)5
12$city = array
(13 11=>'北京',12=>'天津',13=>'河北',14=>'山西',15=>'內蒙古',21=>'遼寧',
14 22=>'吉林',23=>'黑龍江',31=>'上海',32=>'江蘇',33=>'浙江',34=>'安徽',
15 35=>'福建',36=>'江西',37=>'山東',41=>'河南',42=>'湖北',43=>'湖南',
16 44=>'廣東',45=>'廣西',46=>'海南',50=>'重慶',51=>'四川',52=>'貴州',
17 53=>'雲南',54=>'**',61=>'陝西',62=>'甘肅',63=>'青海',64=>'寧夏',
18 65=>'新疆',71=>'台灣',81=>'香港',82=>'澳門',91=>'國外');
19$isum = 0;
20$idcardlength = strlen($idcard
);21
//長度驗證
22if(!preg_match('/^\d(\d|x)$/i', $idcard) && !preg_match('/^\d$/i', $idcard
)) 26
//地區驗證
27$areacode = substr($idcard,0,2);
28if(empty($city[$areacode
]))
32//
15位身份證驗證生日
33if ($idcardlength == 15)
41 } else
4849
//18位身份證處理
50$sbirthday = substr($idcard,6,4).'-'.substr($idcard,10,2).'-'.substr($idcard,12,2);
51$d = new datetime($sbirthday
);52
$dd = $d->format('y-m-d');
53if($sbirthday != $dd
) 57
//身份證編碼規範驗證
58$idcard_base = substr($idcard,0,17);
59if(strtoupper(substr($idcard,17,1)) != getverifybit($idcard_base
)) 63}64
$return['status'] = 1;
65return
$return;66
}6768//
計算身份證校驗碼,根據國家標準gb 11643-1999
69function getverifybit($idcard_base)70
74//
加權因子
75$factor = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
76//
校驗碼對應值
77$verify_number_list = array('1', '0', 'x', '9', '8', '7', '6', '5', '4','3', '2');
78$checksum = 0;
79for ($i = 0; $i
< strlen($idcard_base); $i++)
82$mod = $checksum % 11;
83$verify_number = $verify_number_list[$mod
];84
return
$verify_number
;85 }
身份證合法性驗證
2015年10月14日 16 42 22 從網上扒的,刪掉了一小段無用 修改了一行判斷省份的 1 2 身份證號驗證 相容15,18位 3 4function checkidentitycode idcard 5 12 city array 13 11 北京 12 天津 13 河北 14 山西 15 ...
身份證合法性校驗模板
這個可以驗證15位和18位的身份證,並且包含生日和校驗位的驗證。如果有興趣,還可以加上身份證所在地的驗證,就是前6位有些數字合法有些數字不合法。function isidcardno num num num.touppercase 身份證號碼為15位或者18位,15位時全為數字,18位前17位為數字...
身份證號合法性
身份證校驗 export param card returns export function valididcard card 檢查號碼是否符合規範,包括長度,型別 let iscardno function card d d x if reg.test card false return tru...