身份证方面的函数
写了几个身份证方面的函数,个人感觉挺有用的,特别是在网络问卷调查时,对个人信息里的身份证进行验证很有用,但是应者寥寥,还是收在自己的blog里算了。
// 计算身份证校验码,根据国家标准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(),平时的应用大多是使用后两个函数
这些函数都没有关心身份证字符串的格式问题,在调用前自行进行格式检查
- · 用PHP写FTP文件上传
- · 用PHP写的MD5加密函数
- · 在php中输出html代码
- · php的pconnect()
- · PHP/ASP上传漏洞探究
- · 做个站内搜索引擎
- · heapsort(PHP)
- · 一个塑料期货交易程序分析图程序(PHP+JAVA)
- · 计算排列组合的php代码
- · 对页面的源代码进行加密,使源代码变成乱码,没法读取
- · 用phpUnit帮你调试php程序
- · PHP下对缓冲区的控制
- · PHP实现文件下载
- · 用PHP实现windows资源管理器风格的树型菜单
- · BS结构中使用PHP访问ORACLE LOB
- · 使用PHP 5.0 轻松解析XML文档(5)
- · 使用PHP 5.0 轻松解析XML文档(3)
- · 使用PHP 5.0 轻松解析XML文档(1)
- · PHP中实现面向对象编程(上)
- · PHP中接收复选框信息的方法
- · PHP操作IMAP服务器的类
- · PHP中时间和日期函数总结
- · PHP应用分页显示制作详细讲解(2)
- · PHP5中使用Web服务访问J2EE应用程序(4)
- · PHP5中使用Web服务访问J2EE应用程序(2)
- · PHP中通过Web执行C/C++应用程序
- · 用PHP编程开发“虚拟域名”系统
- · PHP中创建并处理图象
- · 用php编写的日历
- · PHP中的面向对象和面向过程
- · php如何更好更有效的实现-----用户注册页面
- · 上传多个文件的PHP脚本
- · php注入4
- · php注入2
- · PHP中类的理解和应用[二]
- · PHP计数器
- · 实例学习PHP之FastTemplate 模板篇
- · 关于PHP操作文件的一些FAQ总结
- · PHP 5/Zend Engine 2.0的改进
- · 解决RHAS3中Apache2的PHP上传文件大小的限制
- · PHP巧获服务器端信息
- · 利用php和js实现页面数据刷新
- · 用PHP生成PDF文件 with FPDF
- · 用PHP画一个可以更换文字的按纽
- · 一段php加密解密的代码

