喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

【村长请吃饭啊】 ---北京诚聘--- 【你还在犹豫吗?】

上一主题 下一主题
     
标题: 身份证位数转换及验证  
  本主题被作者加入到他/她的 Blog 中  
 
qh663
版主
Rank: 7Rank: 7Rank: 7
中级会员


UID 30020
精华 0
积分 546
帖子 580
金钱 546 喜悦币
威望 0
人脉 0
阅读权限 100
注册 2004-7-13
来自 河源
状态 离线
身份证位数转换及验证

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

<?php 
/**
 *身份证15位转18位
 *$str 15位号码
 */
function id_card_15to18($str){
    if (!
preg_match("/^[1-9]d{14}$/"$str)) return false;
    
$str substr($str06) . '19' substr($str6);
    
$wi = array(7910584216379105842); 
    
$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($str017);
            
$wi = array(7910584216379105842); 
            
$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学习资料
喜悦村BLOG
php团队接兼职项目QQ:80031807
PHP群:768844
2006-6-22 01:03 PM#1
查看资料  访问主页  Blog  发短消息  QQ  顶部
 
那颗花生
新手上路
Rank: 1
初级会员



UID 63086
精华 0
积分 16
帖子 18
金钱 16 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2005-1-12
状态 离线
[推荐阅读] 招聘深圳多名(PHP)多名工程师
谢谢学习一下
测试准确

[ 本帖最后由 那颗花生 于 2006-6-28 02:05 AM 编辑 ]
2006-6-28 01:58 AM#2
查看资料  访问主页  发短消息  QQ  顶部
 
hanyang
乞丐




UID 74744
精华 0
积分 -11
帖子 282
金钱 -11 喜悦币
威望 0
人脉 0
阅读权限 1
注册 2006-6-9
状态 离线
[推荐阅读] 求一个查询数据表是否存在的sql语句
2006-7-11 10:35 AM#3
查看资料  发短消息  QQ  顶部
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 


Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.025114 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP