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

本文共 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

你可能感兴趣的文章
小程序视频或音频自定义可拖拽进度条
查看>>
PHP导出超大的CSV格式的Excel表方案
查看>>
Mac 环境下如何生成Git shh key
查看>>
webpack4 多页面配置 功能齐全 开箱即用
查看>>
jenkins 使用磁盘检查插件 disk check plugin
查看>>
支付宝H5支付配置项用处说明
查看>>
使用 Ruby 拓展 Vim
查看>>
java并发编程学习10--同步器--倒计时门栓
查看>>
centos7下安装LNMP(nginx+PHP7.1.9+mysql5.7)
查看>>
实现compose的五种思路
查看>>
【228天】黑马程序员27天视频学习笔记【Day27-上】
查看>>
NodeAPI学习之Buffer
查看>>
深入java单例模式
查看>>
基于zepto的组件系统搭建
查看>>
c++学习笔记 --- inline这玩意
查看>>
create-react-app
查看>>
20170812-XSS跨站脚本攻击
查看>>
Let’s Build |> 使用Elixir,Phoenix和React打造克隆版的Slack(part 1)
查看>>
如何让 StackNaivgator 实现越级回跳
查看>>
工具简述
查看>>