zoukankan      html  css  js  c++  java
  • 新老身份证验证

    记录下自己记不住的 也不想记住的

     1    function isIdCard( $id )
     2     {
     3         $id = strtoupper($id);
     4         $regx = "/(^d{15}$)|(^d{17}([0-9]|X)$)/";
     5         $arr_split = array();
     6         if(!preg_match($regx, $id))
     7         {
     8             return FALSE;
     9         }
    10         if(15==strlen($id))                                 //检查15位的身份证号码
    11         {
    12             $regx = "/^(d{6})+(d{2})+(d{2})+(d{2})+(d{3})$/";
    13 
    14             @preg_match($regx, $id, $arr_split);
    15             //检查(某种角度上讲 15位身份证号码肯定是19年开头的)生日日期是否正确
    16             $dtm_birth = "19".$arr_split[2] . '/' . $arr_split[3]. '/' .$arr_split[4];
    17             if(!strtotime($dtm_birth))
    18             {
    19                 return FALSE;
    20             } else {
    21                 return TRUE;
    22             }
    23         }
    24         else      //检查18位的身份证号码
    25         {
    26             $regx = "/^(d{6})+(d{4})+(d{2})+(d{2})+(d{3})([0-9]|X)$/";
    27             @preg_match($regx, $id, $arr_split);
    28             $dtm_birth = $arr_split[2] . '/' . $arr_split[3]. '/' .$arr_split[4];
    29             if(!strtotime($dtm_birth))                         //检查生日日期是否正确
    30             {
    31                 return FALSE;
    32             }
    33             else
    34             {
    35                 //检验18位身份证的校验码是否正确。
    36                 //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
    37                 $arr_int = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
    38                 $arr_ch = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
    39                 $sign = 0;
    40                 for ( $i = 0; $i < 17; $i++ )
    41                 {
    42                     $b = (int) $id{$i};
    43                     $w = $arr_int[$i];
    44                     $sign += $b * $w;
    45                 }
    46                 $n = $sign % 11;
    47                 $val_num = $arr_ch[$n];
    48                 if ($val_num != substr($id,17, 1))
    49                 {
    50                     return FALSE;
    51                 }
    52                 else
    53                 {
    54                     return TRUE;
    55                 }
    56             }
    57         }
    58 
    59     }
    作者地址:https://www.cnblogs.com/G921123/
    创作也有乐趣 知识分享 转载注明出处 相互理解 谢谢! WeChat:17321295203
  • 相关阅读:
    web安全培训笔记
    《virtualbox完全学习手册》
    vim多标签,多窗口
    lnmp.org一键安装包
    git基本命令,Git的skil-map,git配置http/https/socks5代理,,,,,,,,,,,,,,,,,,,,,,
    大数据
    chinacloud大数据新闻
    CentOS6.5/7安装配置Samba
    java项目
    学习Java Web开发
  • 原文地址:https://www.cnblogs.com/G921123/p/10155845.html
Copyright © 2011-2022 走看看