身份證合法性驗證

2021-09-07 03:05:54 字數 2008 閱讀 4313

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...