网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 网络学院 >> web编程 >> PHP教程 >> 文章正文
  身份证方面的函数            【字体:
身份证方面的函数
作者:佚名    文章来源:不详    点击数:    更新时间:2007-7-1    

写了几个身份证方面的函数,个人感觉挺有用的,特别是在网络问卷调查时,对个人信息里的身份证进行验证很有用,但是应者寥寥,还是收在自己的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(),平时的应用大多是使用后两个函数
这些函数都没有关心身份证字符串的格式问题,在调用前自行进行格式检查


站内文章搜索 高级搜索
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
  • 一个求最大值与最小值的函数

  • ASP身份证号码验证函数

  • 大灰狼的ASP工具箱——用ASP…

  • ASP中的函数应用方法及应用举…

  • ASP中的函数应用方法及应用举…

  • ASP生成静态页面的方法

  • 不刷新页面的情况下调用ASP

  • ASPX保存远程图片到本地的两…

  • 在ASP中按指定参数格式化显示…

  • ASP里使用MD5加密的函数及示…

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    网络学院©2007 www.23book.net
    为您提供web编程,vb编程,vc编程,服务器架设管理,数据库设计等方面的知识 站长:David