PHP校驗15位和18位身份證號

第十八位數字的計算方法爲: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。
image.pngblog

/**
** Class IDCardFilter
** 身份證號規則
** 15位: 省份(2位) + 地級市(2位) + 縣級市(2位) + 出生年(2位) + 出生月(2位) + 出生日(2位) + 順序號(3位)
** 18位: 省份(2位) + 地級市(2位) + 縣級市(2位) + 出生年(4位) + 出生月(2位) + 出生日(2位) + 順序號(3位) + 校驗位(1位)
** 相比之下,18位 比 15位 多出生年 2位、校驗位 1位。
** 其中,順序號若是是偶數,則說明是女生,順序號是奇數,則說明是男生。
*/

正則校驗
image.png
15位轉18位
image.png
生成校驗碼
image.png
校驗省份
image.png
檢驗生日
image.png
校驗碼對比
image.png
身份證號檢測
image.pngget

$IDCardModel = new IDCardFilter();

$IDCardModel->vaild('身份證號');    //返回boolit

注:身份證驗證類IDCardFilter.phpast

相關文章
相關標籤/搜索