检测身份证

<?php


idcard_legi("***********************");//填入身份证号码


 header("Content-type: text/html; charset=utf-8");
// 18位身份证校验码有效性检查
function idcard_legi($idcard){
     if (strlen($idcard) != 18){ echo "身份证位数不正确"; return false;}
     $idcard_base = substr($idcard, 0, 17);
     if (idcard_verify($idcard_base) != strtoupper(substr($idcard, 17, 1))){
          echo "no";
     }else{
          echo "yes";
     }
}


// 计算身份证校验码,根据国家标准GB 11643-1999
function idcard_verify($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;    
}



?>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值