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 相关文章推荐
php4的session功能评述(二)
Oct 09 PHP
php函数之子字符串替换&amp;#65279; str_replace
Mar 23 PHP
PHP中的生成XML文件的4种方法分享
Oct 06 PHP
php面向对象编程self和static的区别
May 08 PHP
php批量转换文件夹下所有文件编码的函数类
Aug 06 PHP
OAuth认证协议中的HMACSHA1加密算法(实例)
Oct 25 PHP
PHP创建自己的Composer包方法
Apr 09 PHP
php实现微信公众平台发红包功能
Jun 14 PHP
PHP钩子实现方法解析
May 21 PHP
laravel 判断查询数据库返回值的例子
Oct 11 PHP
php操作redis数据库常见方法实例总结
Feb 20 PHP
PHP函数用法详解【初始化、嵌套、内置函数等】
Jun 02 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
php 图片加水印与上传图片加水印php类
2010/05/12 PHP
php 提速工具eAccelerator 配置参数详解
2010/05/16 PHP
thinkphp在模型中自动完成session赋值示例代码
2014/09/09 PHP
PHP中让json_encode不自动转义斜杠“/”的方法
2017/02/28 PHP
关于php支持的协议与封装协议总结(推荐)
2017/11/17 PHP
laravel ORM 只开启created_at的几种方法总结
2018/01/29 PHP
js Select下拉列表框进行多选、移除、交换内容的具体实现方法
2013/08/13 Javascript
Jquery中&quot;$(document).ready(function(){ })&quot;函数的使用详解
2013/12/30 Javascript
JavaScript中关于iframe滚动条的去除和保留
2016/11/17 Javascript
原生JS实现不断变化的标签
2017/05/22 Javascript
微信小程序--组件(swiper)详细介绍
2017/06/13 Javascript
js定时器+简单的动画效果实例
2017/11/10 Javascript
element-ui表格列金额显示两位小数的方法
2018/08/24 Javascript
详解关于JSON.parse()和JSON.stringify()的性能小测试
2019/03/14 Javascript
区分vue-router的hash和history模式
2020/10/03 Javascript
如何利用nodejs自动定时发送邮件提醒(超实用)
2020/12/01 NodeJs
python字符串加密解密的三种方法分享(base64 win32com)
2014/01/19 Python
将Django框架和遗留的Web应用集成的方法
2015/07/24 Python
python实现根据指定字符截取对应的行的内容方法
2018/10/23 Python
Python语法分析之字符串格式化
2019/06/13 Python
Django实现auth模块下的登录注册与注销功能
2019/10/10 Python
Python qrcode 生成一个二维码的实例详解
2020/02/12 Python
使用Python FastAPI构建Web服务的实现
2020/06/08 Python
pycharm 实现本地写代码,服务器运行的操作
2020/06/08 Python
解决Python3.7.0 SSL低版本导致Pip无法使用问题
2020/09/03 Python
基于python实现图片转字符画代码实例
2020/09/04 Python
Marks & Spencer爱尔兰:英国马莎百货
2016/04/20 全球购物
马来西亚最大的在线隐形眼镜商店:MrLens
2019/03/27 全球购物
编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串
2014/01/07 面试题
初一生物教学反思
2014/01/18 职场文书
新员工入职感言
2014/02/01 职场文书
《圆明园的毁灭》教学反思
2014/02/28 职场文书
网络管理专业求职信
2014/03/15 职场文书
公司请假条范文
2014/04/11 职场文书
工业设计毕业生自荐信
2014/04/13 职场文书
Windows server 2003卸载和安装IIS的图文教程
2022/07/15 Servers