PHP 身份证号验证函数


Posted in PHP onMay 07, 2009
function validation_filter_id_card($id_card) 
{ 
if(strlen($id_card) == 18) 
{ 
return idcard_checksum18($id_card); 
} 
elseif((strlen($id_card) == 15)) 
{ 
$id_card = idcard_15to18($id_card); 
return idcard_checksum18($id_card); 
} 
else 
{ 
return false; 
} 
} 
// 计算身份证校验码,根据国家标准GB 11643-1999 
function idcard_verify_number($idcard_base) 
{ 
if(strlen($idcard_base) != 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($idcard_base); $i++) 
{ 
$checksum += substr($idcard_base, $i, 1) * $factor[$i]; 
} 
$mod = $checksum % 11; 
$verify_number = $verify_number_list[$mod]; 
return $verify_number; 
} 
// 将15位身份证升级到18位 
function idcard_15to18($idcard){ 
if (strlen($idcard) != 15){ 
return false; 
}else{ 
// 如果身份证顺序码是996 997 998 999,这些是为百岁以上老人的特殊编码 
if (array_search(substr($idcard, 12, 3), array('996', '997', '998', '999')) !== false){ 
$idcard = substr($idcard, 0, 6) . '18'. substr($idcard, 6, 9); 
}else{ 
$idcard = substr($idcard, 0, 6) . '19'. substr($idcard, 6, 9); 
} 
} 
$idcard = $idcard . idcard_verify_number($idcard); 
return $idcard; 
} 
// 18位身份证校验码有效性检查 
function idcard_checksum18($idcard){ 
if (strlen($idcard) != 18){ return false; } 
$idcard_base = substr($idcard, 0, 17); 
if (idcard_verify_number($idcard_base) != strtoupper(substr($idcard, 17, 1))){ 
return false; 
}else{ 
return true; 
} 
}
PHP 相关文章推荐
上传多个文件的PHP脚本
Nov 26 PHP
dhtmlxTree目录树增加右键菜单以及拖拽排序的实现方法
Apr 26 PHP
PHP跳转页面的几种实现方法详解
Jun 08 PHP
php定义一个参数带有默认值的函数实例分析
Mar 16 PHP
PHP模板引擎smarty详细介绍
May 26 PHP
PHP实现微信JS-SDK接口选择相册及拍照并上传的方法
Dec 05 PHP
Yii框架表单提交验证功能分析
Jan 07 PHP
php使用GD2绘制几何图形示例
Feb 15 PHP
Laravel网站打开速度优化的方法汇总
Jul 16 PHP
PHP 布尔值的自增与自减的实现方法
May 03 PHP
ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解
Apr 02 PHP
PHP信号处理机制的操作代码讲解
Apr 19 PHP
php 购物车的例子
May 04 #PHP
PHP 错误之引号中使用变量
May 04 #PHP
PHP 字符串编码截取函数(兼容utf-8和gb2312)
May 02 #PHP
apache2.2.4+mysql5.0.77+php5.2.8安装精简
Apr 29 #PHP
PHP 读取文件的正确方法
Apr 29 #PHP
PHP session有效期问题
Apr 26 #PHP
PHP 判断常量,变量和函数是否存在
Apr 26 #PHP
You might like
php 文件状态缓存带来的问题
2008/12/14 PHP
php输出xml格式字符串(用的这个)
2012/07/12 PHP
Laravel模板引擎Blade中section的一些标签的区别介绍
2015/02/10 PHP
PHP设计模式之模板方法模式实例浅析
2018/12/20 PHP
thinkphp整合系列之极验滑动验证码geetest功能
2019/06/18 PHP
JavaScript arguments 多参传值函数
2010/10/24 Javascript
Three.js源码阅读笔记(Object3D类)
2012/12/27 Javascript
js 控制页面跳转的5种方法
2013/09/09 Javascript
js根据日期判断星座的示例代码
2014/01/23 Javascript
使用HTML+CSS+JS制作简单的网页菜单界面
2015/07/27 Javascript
用javascript实现自动输出网页文本
2015/07/30 Javascript
几种二级联动案例(jQuery\Array\Ajax php)
2016/08/13 Javascript
前端框架Vue.js中Directive知识详解
2016/09/12 Javascript
js html css实现复选框全选与反选
2016/10/09 Javascript
基于JQuery实现的跑马灯效果(文字无缝向上翻动)
2016/12/02 Javascript
canvas 实现中国象棋
2017/02/17 Javascript
jQuery插件zTree实现的基本树与节点获取操作示例
2017/03/08 Javascript
angular2+nodejs实现图片上传功能
2017/03/27 NodeJs
详解JavaScript调用栈、尾递归和手动优化
2017/06/03 Javascript
layui弹出层按钮提交iframe表单的方法
2018/08/20 Javascript
JS实现判断数组是否包含某个元素示例
2019/05/24 Javascript
微信小程序页面上下滚动效果
2020/11/18 Javascript
js 计数排序的实现示例(升级版)
2020/01/12 Javascript
python实现数独游戏 java简单实现数独游戏
2018/03/30 Python
对python中list的拷贝与numpy的array的拷贝详解
2019/01/29 Python
python中PS 图像调整算法原理之亮度调整
2019/06/28 Python
python定义类self用法实例解析
2020/01/22 Python
Keras设定GPU使用内存大小方式(Tensorflow backend)
2020/05/22 Python
canvas离屏技术与放大镜实现代码示例
2018/08/31 HTML / CSS
Solid & Striped官网:美国泳装品牌
2019/06/19 全球购物
康拓普公司Java笔面试
2016/09/23 面试题
学校经典推荐信
2013/10/30 职场文书
亮剑精神演讲稿
2014/05/23 职场文书
社区春季防火方案
2014/06/02 职场文书
教师节班会开场白
2015/06/01 职场文书
2015年国庆节寄语
2015/08/17 职场文书