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控制网页过期时间的代码
Sep 28 PHP
php 获取百度的热词数据的代码
Feb 18 PHP
php错误、异常处理机制(补充)
May 07 PHP
深入PHP与浏览器缓存的分析
Jun 03 PHP
浅析PHP中的UNICODE 编码与解码
Jun 29 PHP
PHP数据库万能引擎类adodb配置使用以及实例集锦
Jun 12 PHP
PHP使用GIFEncoder类生成gif动态滚动字幕
Jul 01 PHP
php去掉URL网址中带有PHPSESSID的配置方法
Jul 08 PHP
PHP简单实现数字分页功能示例
Aug 24 PHP
Laravel学习教程之路由模块
Aug 18 PHP
PHP Class SoapClient not found解决方法
Jan 20 PHP
PHP CURL使用详解
Mar 21 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
DIY实用性框形天线
2021/03/02 无线电
php解压文件代码实现php在线解压
2014/02/13 PHP
PHP之正则表达式捕获组与非捕获组(详解)
2015/07/29 PHP
Zend Framework实现Zend_View集成Smarty模板系统的方法
2016/03/05 PHP
SAE实时日志接口SDK用法示例
2016/10/09 PHP
php mysql_real_escape_string addslashes及mysql绑定参数防SQL注入攻击
2016/12/23 PHP
IE8下关于querySelectorAll()的问题
2010/05/13 Javascript
jQuery源码分析之jQuery.fn.each与jQuery.each用法
2015/01/23 Javascript
使用CoffeeScrip优美方式编写javascript代码
2015/10/28 Javascript
js获取图片宽高的方法
2015/11/25 Javascript
JavaScript保留关键字汇总
2015/12/01 Javascript
WebGL利用FBO完成立方体贴图效果完整实例(附demo源码下载)
2016/01/26 Javascript
jQuery无缝轮播图代码
2016/12/22 Javascript
使用async await 封装 axios的方法
2018/07/09 Javascript
bootstrap-table实现表头固定以及列固定的方法示例
2019/03/07 Javascript
模块化react-router配置方法详解
2019/06/03 Javascript
vscode 配置vue+vetur+eslint+prettier自动格式化功能
2020/03/23 Javascript
vue-i18n实现中英文切换的方法
2020/07/06 Javascript
[57:38]2018DOTA2亚洲邀请赛3月30日 小组赛A组 OpTic VS OG
2018/03/31 DOTA
下载给定网页上图片的方法
2014/02/18 Python
Python实现的数据结构与算法之链表详解
2015/04/22 Python
python字符串str和字节数组相互转化方法
2017/03/18 Python
基于python的Tkinter编写登陆注册界面
2017/06/30 Python
python按综合、销量排序抓取100页的淘宝商品列表信息
2018/02/24 Python
pycharm执行python时,填写参数的方法
2018/10/29 Python
关于python3.9安装wordcloud出错的问题及解决办法
2020/11/02 Python
HTML5 Blob 实现文件下载功能的示例代码
2019/11/29 HTML / CSS
美国办公用品折扣网站:Shoplet.com
2019/11/24 全球购物
员工薪酬福利制度
2014/01/17 职场文书
个人公开承诺书
2014/03/28 职场文书
艺术设计专业求职自荐信
2014/05/19 职场文书
镇班子对照检查材料思想汇报
2014/09/24 职场文书
研究生导师推荐信
2015/03/25 职场文书
解放思想大讨论活动总结
2015/05/09 职场文书
委托收款证明
2015/06/23 职场文书
详细总结Python常见的安全问题
2021/05/21 Python