频道直达 - 专题 - 新闻 - 基础 - 高级 - 安装 - 技巧 - 数据库 - 手册 - PHP - Linux - Java - MySQL - Apache - 麻辣堂 - 狼盟 - Rails社群 - 搜索 - 下载 - 开源 - 论坛
PHP开发资源网 主页>>PHP基础教程>> 收藏此文 | 收藏本站 | 设为首页

身份证位数转换及验证

来源:www.phpx.com 作者:qh663 出处:www.phpx.com 2007-6-4 21:10:05 进入讨论组
关 键 词: 身份证位数转换,身份证验证

search了一个论坛,没发现比较简单的身份证代码转换函数。我写的这两个函数关键算法是从网上找来的。取之于网络,回馈于网络。把这段代码贴出来,给有需要的朋友。

<?php
/**
*身份证15位转18位
*$str 15位号码
*/
function id_card_15to18($str){
if (!preg_match("/^[1-9]\d{14}$/", $str)) return false;
$str = substr($str, 0, 6) . '19' . substr($str, 6);
$wi = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
$ai = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
for ($i = 0;$i < 17;$i++) $sigma += ((int) $str{$i}) * $wi[$i];
return $str.$ai[($sigma % 11)];
}

/**
*身份证校验函数
*$str 15位或18位号码
*/
function is_id_card($str){
if (preg_match("/^[1-9]\d{14}(\d{2}[0-9X])?$/", $str)) {
if (strlen($str) == 18) {
$s = substr($str, 0, 17);
$wi = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
$ai = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
for ($i = 0;$i < 17;$i++) $sigma += ((int) $s{$i}) * $wi[$i];
if ($ai[($sigma % 11)] == $str{17}) return true;
else return false;
}
return true;
}
return false;
}
?>欢迎进入PHP开发资源论坛讨论。
收藏此文】【 】【打印】【关闭
相关文章
图文推荐
论 坛 资 源
PHP开发资源网奋斗目标
阅读排行:
热门技术文档
最新图文档
本站编辑推荐:(本站开通Delphi4PHP专区,欢迎进入论坛交流!)
编缉最近更新文章
网站赞助商
搜索您感兴趣的内容
 
   网站首页 -  网站地图 -  网站合作 -  手册中心 -  通用网址 -  网站论坛 -  网站投稿 -  友情链接 -  帮助中心
版权所有:PHP开发资源网 © 2003-2008 通用网址:PHP资源网 合作媒体: 赛迪网IT技术
互联网违法和不良信息举报中心 | 不良信息举报信箱