php正则判断是否为合法身份证号的方法

2025-05-27 0 85

本文实例讲述了php正则判断是否为合法身份证号的方法。分享给大家供大家参考,具体如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33
/**

* 判断是否为合法的身份证号码

* @param $mobile

* @return int

*/

function isCreditNo($vStr){

$vCity = array(

'11','12','13','14','15','21','22',

'23','31','32','33','34','35','36',

'37','41','42','43','44','45','46',

'50','51','52','53','54','61','62',

'63','64','65','71','81','82','91'

);

if (!preg_match('/^([\\d]{17}[xX\\d]|[\\d]{15})$/', $vStr)) return false;

if (!in_array(substr($vStr, 0, 2), $vCity)) return false;

$vStr = preg_replace('/[xX]$/i', 'a', $vStr);

$vLength = strlen($vStr);

if ($vLength == 18) {

$vBirthday = substr($vStr, 6, 4) . '-' . substr($vStr, 10, 2) . '-' . substr($vStr, 12, 2);

} else {

$vBirthday = '19' . substr($vStr, 6, 2) . '-' . substr($vStr, 8, 2) . '-' . substr($vStr, 10, 2);

}

if (date('Y-m-d', strtotime($vBirthday)) != $vBirthday) return false;

if ($vLength == 18) {

$vSum = 0;

for ($i = 17 ; $i >= 0 ; $i--) {

$vSubStr = substr($vStr, 17 - $i, 1);

$vSum += (pow(2, $i) % 11) * (($vSubStr == 'a') ? 10 : intval($vSubStr , 11));

}

if($vSum % 11 != 1) return false;

}

return true;

}

希望本文所述对大家PHP程序设计有所帮助。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 php正则判断是否为合法身份证号的方法 https://www.kuaiidc.com/73638.html

相关文章

发表评论
暂无评论