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 相关文章推荐
用文本文件制作留言板提示(下)
Oct 09 PHP
PHP session有效期问题
Apr 26 PHP
简单的移动设备检测PHP脚本代码
Feb 19 PHP
关于php 接口问题(php接口主要也就是运用curl,curl函数)
Jul 01 PHP
php使用ereg验证文件上传的方法
Dec 16 PHP
php实现按照权重随机排序数据的方法
Jan 09 PHP
Symfony2实现在doctrine中内置数据的方法
Feb 05 PHP
浅析PHP中的i++与++i的区别及效率
Jun 15 PHP
yii2高级应用之自定义组件实现全局使用图片上传功能的方法
Oct 08 PHP
php mysql_list_dbs()函数用法示例
Mar 29 PHP
PHP获取当前时间不准确问题解决方案
Aug 14 PHP
php自动加载代码实例详解
Feb 26 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的图形函数中显示汉字
2006/10/09 PHP
PHP4 与 MySQL 数据库操作函数详解
2006/12/06 PHP
JavaScript创建命名空间的5种写法
2014/06/24 PHP
windows7下安装php的imagick和imagemagick扩展教程
2014/07/04 PHP
php表单习惯用的正则表达式
2017/10/11 PHP
JAVASCRIPT HashTable
2007/01/22 Javascript
javascript 贪吃蛇实现代码
2008/11/22 Javascript
JavaScript 计算图片加载数量的代码
2011/01/01 Javascript
jquery通过a标签删除table中的一行的代码
2013/12/02 Javascript
JavaScript实现将数组中所有元素连接成一个字符串的方法
2015/04/06 Javascript
Bootstrap下拉菜单样式
2017/02/07 Javascript
基于js的变量提升和函数提升(详解)
2017/09/17 Javascript
jQuery操作attr、prop、val()/text()/html()、class属性
2019/05/23 jQuery
vue登录以及权限验证相关的实现
2019/10/25 Javascript
[01:04:22]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 IG vs EG
2018/04/01 DOTA
[47:39]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 LGD vs OPTIC
2018/03/31 DOTA
在Python下进行UDP网络编程的教程
2015/04/29 Python
Python编程中运用闭包时所需要注意的一些地方
2015/05/02 Python
使用Python脚本来获取Cisco设备信息的示例
2015/05/04 Python
对pycharm代码整体左移和右移缩进快捷键的介绍
2018/07/16 Python
浅谈python3发送post请求参数为空的情况
2018/12/28 Python
深入浅析python 协程与go协程的区别
2019/05/09 Python
django表单的Widgets使用详解
2019/07/22 Python
解决pycharm安装第三方库失败的问题
2020/05/09 Python
Keras实现DenseNet结构操作
2020/07/06 Python
丝芙兰法国官网:SEPHORA法国
2016/09/01 全球购物
美国咖啡批发网站:Coffee.org
2017/06/29 全球购物
Nike爱尔兰官方网站:Nike.com (IE)
2018/03/12 全球购物
意大利婴儿产品网上商店:Mukako
2018/10/14 全球购物
Ego Shoes官网:英国时髦鞋类品牌
2020/10/19 全球购物
平安家庭示范户事迹
2014/06/02 职场文书
班子四风对照检查材料
2014/08/21 职场文书
离职报告格式
2014/11/04 职场文书
放假通知范文
2015/04/14 职场文书
2015年物资管理工作总结
2015/05/20 职场文书
仅用一句SQL更新整张表的涨跌幅、涨跌率的解决方案
2021/05/06 MySQL