博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
身份证号验证
阅读量:6627 次
发布时间:2019-06-25

本文共 1894 字,大约阅读时间需要 6 分钟。

/**     * @param $idcard     * @return bool     * 判断身份证格式     */    function is_idcard($idcard){        $id = strtoupper($idcard);        $regx = "/(^\d{15}$)|(^\d{17}([0-9]|X)$)/";        $arr_split = array();        if(!preg_match($regx, $id))        {            return FALSE;        }        if(15 == strlen($id)) //检查15位        {            $regx = "/^(\d{6})+(\d{2})+(\d{2})+(\d{2})+(\d{3})$/";            @preg_match($regx, $id, $arr_split);            //检查生日日期是否正确            $dtm_birth = "19".$arr_split[2] . '/' . $arr_split[3]. '/' .$arr_split[4];            if(!strtotime($dtm_birth))            {                return FALSE;            } else {                return TRUE;            }        }        else      //检查18位        {            $regx = "/^(\d{6})+(\d{4})+(\d{2})+(\d{2})+(\d{3})([0-9]|X)$/";            @preg_match($regx, $id, $arr_split);            $dtm_birth = $arr_split[2] . '/' . $arr_split[3]. '/' .$arr_split[4];            if(!strtotime($dtm_birth)) //检查生日日期是否正确            {                return FALSE;            }            else            {                //检验18位身份证的校验码是否正确。                //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。                $arr_int = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);                $arr_ch = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');                $sign = 0;                for ( $i = 0; $i < 17; $i++ )                {                    $b = (int) $id{$i};                    $w = $arr_int[$i];                    $sign += $b * $w;                }                $n = $sign % 11;                $val_num = $arr_ch[$n];                if ($val_num != substr($id,17, 1))                {                    return FALSE;                }else{                    return TRUE;                }            }        }    }

  

转载于:https://www.cnblogs.com/lfjblog/p/10892830.html

你可能感兴趣的文章
接口幂等
查看>>
LibreOffice 打开中文乱码
查看>>
FromBottomToTop第十三周项目博客
查看>>
【常用工具】常用工具收集
查看>>
Tax
查看>>
第二阶段团队冲刺站立会议06
查看>>
html
查看>>
本地wampserver如何配置伪静态
查看>>
C#串口通信实例
查看>>
小程序数据返回时刷新当前页面数据
查看>>
jFinal 关联数据库操作
查看>>
团队冲刺第二天
查看>>
sed删除空行和开头的空格和tab键
查看>>
php扩展安装
查看>>
Windows与Linux之间的文件自动同步
查看>>
15个重要的Android代码
查看>>
(转)android 牛人必修 ant 编译android工程
查看>>
求最大公约数与最小公倍数
查看>>
C# Winform 跨线程更新UI控件常用方法总结(转)
查看>>
eclipse菜单栏不显示 + the system is running in lou-graphics mode问题
查看>>