第十八位數字的計算方法爲:php
1.將前面的身份證號碼17位數分別乘以不一樣的係數。從第一位到第十七位的係數分 別爲:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 git
2.將這17位數字和係數相乘的結果相加。github
3.用加出來和除以11,看餘數是多少?spa
4餘數只可能有0 1 2 3 4 5 6 7 8 9 10這11個數字。其分別對應的最後一位身份證的號碼爲1 0 X 9 8 7 6 5 4 3 2。code
5.經過上面得知若是餘數是2,就會在身份證的第18位數字上出現羅馬數字的Ⅹ。若是餘數是10,身份證的最後一位號碼就是2。blog
/** ** Class IDCardFilter ** 身份證號規則 ** 15位: 省份(2位) + 地級市(2位) + 縣級市(2位) + 出生年(2位) + 出生月(2位) + 出生日(2位) + 順序號(3位) ** 18位: 省份(2位) + 地級市(2位) + 縣級市(2位) + 出生年(4位) + 出生月(2位) + 出生日(2位) + 順序號(3位) + 校驗位(1位) ** 相比之下,18位 比 15位 多出生年 2位、校驗位 1位。 ** 其中,順序號若是是偶數,則說明是女生,順序號是奇數,則說明是男生。 */
正則校驗
15位轉18位
生成校驗碼
校驗省份
檢驗生日
校驗碼對比
身份證號檢測get
$IDCardModel = new IDCardFilter();$IDCardModel->vaild('身份證號'); //返回boolit