手机
当前位置:查字典教程网 >编程开发 >php教程 >php不用正则验证真假身份证
php不用正则验证真假身份证
摘要:直接看代码吧,很简单的一个PHP类复制代码代码如下:

直接看代码吧,很简单的一个PHP类

复制代码 代码如下:

<?php

$IDCard = new IDCard();

var_dump($IDCard::isCard($_GET['card']));

/**

* 身份证处理类

*/

class IDCard {

//检证身份证是否正确

public static function isCard($card) {

$card = self::to18Card($card);

if (strlen($card) != 18) {

return false;

}

$cardBase = substr($card, 0, 17);

return (self::getVerifyNum($cardBase) == strtoupper(substr($card, 17, 1)));

}

//格式化15位身份证号码为18位

public static function to18Card($card) {

$card = trim($card);

if (strlen($card) == 18) {

return $card;

}

if (strlen($card) != 15) {

return false;

}

// 如果身份证顺序码是996 997 998 999,这些是为百岁以上老人的特殊编码

if (array_search(substr($card, 12, 3), array('996', '997', '998', '999')) !== false) {

$card = substr($card, 0, 6) . '18' . substr($card, 6, 9);

} else {

$card = substr($card, 0, 6) . '19' . substr($card, 6, 9);

}

$card = $card . self::getVerifyNum($card);

return $card;

}

// 计算身份证校验码,根据国家标准gb 11643-1999

private static function getVerifyNum($cardBase) {

if (strlen($cardBase) != 17) {

return false;

}

// 加权因子

$factor = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);

// 校验码对应值

$verify_number_list = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');

$checksum = 0;

for ($i = 0; $i < strlen($cardBase); $i++) {

$checksum += substr($cardBase, $i, 1) * $factor[$i];

}

$mod = $checksum % 11;

$verify_number = $verify_number_list[$mod];

return $verify_number;

}

}

?>

另外,关于身份证号验证本站还提供了身份证归属地查询工具如下:

http://tools.jb51.net/bianmin/sfz

【php不用正则验证真假身份证】相关文章:

php使用GD实现颜色渐变实例

php分页的功能模块分享

php分页函数

一段php加密解密的代码

php正则

php eval函数一句话木马代码

php页面缓存ob系列函数介绍

php生成随机密码的自定义函数

php使用cookie实现记住用户名和密码实现代码

用PHP实现验证码功能

精品推荐
分类导航