php不用正则验证真假身份证


Posted in PHP onNovember 06, 2013

直接看代码吧,很简单的一个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; 

    } 

} 

?>  

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

PHP 相关文章推荐
彻底杜绝PHP的session cookie错误
Aug 09 PHP
ThinkPHP的RBAC(基于角色权限控制)深入解析
Jun 17 PHP
php定时计划任务与fsockopen持续进程实例
May 23 PHP
php实现的九九乘法口诀表简洁版
Jul 28 PHP
ThinkPHP后台首页index使用frameset时的注意事项分析
Aug 22 PHP
CI配置多数据库访问的方法
Mar 28 PHP
PHP模板引擎Smarty之配置文件在模板变量中的使用方法示例
Apr 11 PHP
PHP实现的浏览器检查类
Apr 11 PHP
利用php的ob缓存机制实现页面静态化方法
Jul 09 PHP
PHP多线程模拟实现秒杀抢单
Feb 07 PHP
PHP析构函数destruct与垃圾回收机制的讲解
Mar 22 PHP
apache集成php7.3.5的详细步骤
Jun 20 PHP
php 中文字符串首字母的获取函数分享
Nov 04 #PHP
PHP图片上传代码
Nov 04 #PHP
PHP CURL获取cookies模拟登录的方法
Nov 04 #PHP
php Session存储到Redis的方法
Nov 04 #PHP
在PHP中使用redis
Nov 04 #PHP
6种php上传图片重命名的方法实例
Nov 04 #PHP
php preg_replace替换实例讲解
Nov 04 #PHP
You might like
隐藏X-Space个人空间下方版权方法隐藏X-Space个人空间标题隐藏X-Space个人空间管理版权方法
2007/02/22 PHP
一组PHP可逆加密解密算法实例代码
2014/01/21 PHP
php删除数组元素示例分享
2014/02/17 PHP
php序列化函数serialize() 和 unserialize() 与原生函数对比
2015/05/08 PHP
使用PHP免费发送定时短信的实例
2016/10/24 PHP
PHP实现对xml的增删改查操作案例分析
2017/05/19 PHP
[企业公众号]升级到[企业微信]之后发送消息失败的解决方法
2017/06/30 PHP
PHP折半(二分)查找算法实例分析
2018/05/12 PHP
解决laravel session失效的问题
2019/10/14 PHP
获取css样式表内样式的js函数currentStyle(IE),defaultView(FF)
2011/02/14 Javascript
再谈querySelector和querySelectorAll的区别与联系
2012/04/20 Javascript
创建公共调用 jQuery Ajax 带返回值
2012/08/01 Javascript
jquery 漂亮的删除确认和提交无刷新删除示例
2013/11/13 Javascript
jquery ajax jsonp跨域调用实例代码
2013/12/11 Javascript
JavaScript制作简单的日历效果
2016/03/10 Javascript
js闭包引起的事件注册问题介绍
2016/03/29 Javascript
AngularJS 输入验证详解及实例代码
2016/07/28 Javascript
js改变透明度实现轮播图的算法
2020/08/24 Javascript
jQuery实现的简单悬浮层功能完整实例
2017/01/23 Javascript
vue bus全局事件中心简单Demo详解
2018/02/26 Javascript
在node环境下parse Smarty模板的使用示例代码
2019/11/15 Javascript
[01:32:22]DOTA2-DPC中国联赛 正赛 Ehome vs VG BO3 第一场 2月5日
2021/03/11 DOTA
Python程序中使用SQLAlchemy时出现乱码的解决方案
2015/04/24 Python
详细解读Python中的__init__()方法
2015/05/02 Python
python保存字符串到文件的方法
2015/07/01 Python
Python 操作MySQL详解及实例
2017/04/30 Python
Python3远程监控程序的实现方法
2019/07/15 Python
Django ORM多对多查询方法(自定义第三张表&amp;ManyToManyField)
2019/08/09 Python
解决Tensorflow sess.run导致的内存溢出问题
2020/02/05 Python
Python生成六万个随机,唯一的8位数字和数字组成的随机字符串实例
2020/03/03 Python
StubHub墨西哥:购买和出售您的门票
2016/09/17 全球购物
妇女干部培训方案
2014/05/12 职场文书
我为党旗添光彩演讲稿
2014/09/10 职场文书
党员教师批评与自我批评发言稿
2014/10/15 职场文书
务虚会发言材料
2014/12/25 职场文书
导游词之河北白洋淀
2020/01/15 职场文书