当前位置:首页 > 技术教程 > 脚本编程 > 正文内容

php中验证身份证号

atao5年前 (2020-06-18)脚本编程4378

转载,PHP验证身份证号的正确性,使用了正则验证身份证号中的省市数据、出生日期,验证尾号识别码。

private function is_idcard($vStr) {
        $vCity = array('11', '12', '13', '14', '15', '21', '22', '23', 
            '31', '32', '33', '34', '35', '36', '37', '41', '42', '43', 
            '44', '45', '46', '50', '51', '52', '53', '54', '61', '62', 
            '63', '64', '65', '71', '81', '82', '91');
        if (!preg_match('/^(\d{17}[xX\d]|\d{15})$/', $vStr)) return false;
        if (!in_array(substr($vStr, 0, 2), $vCity)) return false;
        $vStr = preg_replace('/[xX]$/i', 'a', $vStr);
        $vLength = strlen($vStr);
        if ($vLength == 18) {
            $vBirthday = substr($vStr, 6, 4) . '-' . 
                substr($vStr, 10, 2) . '-' . substr($vStr, 12, 2);
        } else {
            $vBirthday = '19' . substr($vStr, 6, 2) . '-' . 
                substr($vStr, 8, 2) . '-' . substr($vStr, 10, 2);
        }
        if (date('Y-m-d', strtotime($vBirthday)) != $vBirthday) return false;
        if ($vLength == 18) {
            $vSum = 0;
            for ($i = 17; $i >= 0; $i--) {
                $vSubStr = substr($vStr, 17 - $i, 1);
                $vSum += (pow(2, $i) % 11) * (($vSubStr == 'a') ? 10 : intval($vSubStr, 11));
            }
            if ($vSum % 11 != 1) return false;
        }
        return true;
    }//1*945523972


扫描二维码推送至手机访问。

版权声明:本文由武景涛的博客发布,如需转载请注明出处。

本文链接:http://www.yizhanhongtu.cn/post/3.html

分享给朋友:

相关文章

php事务是什么,php原生事务的实现和mysql回滚操作

php事务是什么,php原生事务的实现和mysql回滚操作

事务就是一组原子性的SQL查询,或者说一个独立的工作单元。PHP事务四大特性原子性(Atomicity):事务是数据库的逻辑工作单位,它对数据库的修改要么全部执行,要么全部不执行。一致性(Consis...

Ajax实现php页面下拉加载翻页(从mysql中获取数据)

Ajax实现php页面下拉加载翻页(从mysql中获取数据)

下拉翻页是通过ajax请求,把页码传入php处理页,在php处理页中获得分页后到数据库中查询数据并返回json数组对象。演示图操作之前先建数据库,百度自行下载JQ库!基本流程:1.在首页中调用6条数据...

免费接入微信登录接口获取openid(无须申请,直接调用)

免费接入微信登录接口获取openid(无须申请,直接调用)

简介免费接入微信登录接口获取openid(无须申请,直接调用,适合web、pc、手机端,全平台兼容)无缝衔接微信获取openid、微信头像地址、微信昵称信息拿到openid之后,就可以自行操作更多身份...

php导出excel中数字会自动转换为科学计数法解决办法

php导出excel中数字会自动转换为科学计数法解决办法

原因:凡数字超过11位数,Excel 表格就会用科学记数法显示。如果要输入超过11位的数,得把单元格设为文本形式或在输入数字前先输入一个英文单引号(')或者加入制表符。数据导出不转换科学计数法...

php基于QRcode类生成二维码,类文件下载

php基于QRcode类生成二维码,类文件下载

使用PHP语言生成二维码,还是挺有难度的,除了调用生成二维码图片的接口除外,如果自己写代码生成,真的无从下手。然而,我们可以使用phpqrcode这个现成的类文件,PHP二维码生成类库,利用它可以轻松...