复制代码 代码如下:<?php
// 计算身份证校验码,根据国家标准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;
}
}
?>
其中的$idcard_base是指身份证中的本位码,本位码是18位身份证里才有的,也就是18位身份证的前17位,最后一位称为校验码
一般在使用的时候不用直接调用idcard_verify_number(),平时的应用大多是使用后两个函数
这些函数都没有关心身份证字符串的格式问题,在调用前自行进行格式检查
相关推荐:
javascript 判断某年某月有多少天的实现代码 推荐
国外开发者谈为何放弃PHP而改用Python
xampp apache启动失效问题的解决方法
jQuery 加上最后自己的验证
javascript void(0)的妙用
巧用DOS 伪装保护文件完整版
jsp 自定义标签实例
SQLSERVER中union,cube,rollup,cumpute运算符使用说明
FCKeditor 编辑器插入代码功能实现步骤
关于Flex 初始化的research
常见的数字验证正则表达式整理
Javascript remove 自定义数组删除方法
Javascript 中文字符串处理额外注意事项
根据多条件查询临时表 想得到不同结果集的方法
php后台程序与Javascript的两种交互方式
Jquery 获取表单text,areatext,radio,checkbox,select值的代码
JavaScript中全局变量、函数内变量以及常量表达式的效率测试
VBScript 算一算你从出生到现在共计多少天
初学CAKEPHP 基础教程
Vista IIS7添加PHP支持的方法
JavaScript 浮动定位提示效果实现代码第1/2页
Python 匹配任意字符(包括换行符)的正则表达式写法
网页禁用右键实现代码(JavaScript代码)
php实现mysql同步的实现方法
AJAX 进度条实现代码
asp 动态数组 提供Add、Insert、Remove、RemoveAt、Search等方法。
JS CSS制作饱含热情的镶边文字闪烁特效
php面向对象全攻略 (十六) 对象的串行化
jquery 插件开发方法小结
javascript hashtable实现代码
JavaScript 炫彩的文字
asp.net网站开发包wq.dll打包下载
js表格分页实现代码
js cookies实现简单统计访问次数
php self,$this,const,static,-&gt;的使用
刀片服务器五大误区解读
Cython 三分钟入门教程
javascript 面向对象编程 聊聊对象的事
java对XML文件的解析、节点的增加、删除操作总结
数据库中union 与union all 的区别
文字在网页上下浮动 学习可以不建议用
用Javascript 编写可以缓慢弹出收缩的层
ASP 调用dll及封装dll实例
Python 开发Activex组件方法
JavaScript 接收键盘指令示例
DBCC CHECKIDENT 重置数据库标识列从某一数值开始
修改插入时间不匹配问题
ASP 正则表达式的应用使用说明
alt键 chr码值对应列表查看方法
担起净化网络环境责任 IDC行业在发展中成长