PHP函数实现验证身份证号码并提取年龄

要实现一个 PHP 函数来验证身份证号码并提取年龄,可以使用以下代码:

php 复制代码
/**
 * 验证身份证号码并提取年龄
 * @param $id
 * @return false|int|string
 */
function isIdno($id){
    $id = strtoupper($id);
    $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{
            //提取年龄
            $age = date("Y") - (int)substr($id, 6, 2);
            return $age;
        }
    }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{
            //提取年龄
            $age = date("Y") - (int)substr($id, 6, 4);
            return $age;
        }
    }
}

主要实现原理是:首先将身份证号码转换为大写,然后使用正则表达式检查其格式是否正确。如果格式正确,函数将检查出生日期是否正确,然后根据身份证号码的长度进行不同的处理。如果出生日期正确,函数将提取并返回年龄。如果出生日期不正确,函数将返回 false。

相关推荐
程序猿小D几秒前
Java项目:基于SSM框架实现的进销存管理系统【ssm+B/S架构+源码+数据库+毕业论文+远程部署】
java·数据库·mysql·ssm·jsp·毕业论文·进销存管理系统
得物技术6 分钟前
Java volatile 关键字到底是什么|得物技术
java·后端
HoHeHa9 分钟前
IDEA 手动下载安装数据库驱动,IDEA无法下载数据库驱动问题解决方案,IDEA无法连接数据库解决方案(通用,Oracle为例)
java·数据库·intellij-idea
我命由我1234512 分钟前
Android Studio 提示信息 ‘equals(““)‘ can be replaced with ‘isEmpty()‘
android·ide·android studio·安卓·android jetpack·android-studio·android runtime
你可以叫我仔哥呀14 分钟前
Java程序员学从0学AI(七)
java·开发语言·人工智能·ai·spring ai
Bryce李小白21 分钟前
Flutter实现Android原生相机拍照
android·数码相机·flutter
初学者-Study22 分钟前
Android基础(一) 运行HelloWorld
android·helloworld·模拟器运行
杨DaB32 分钟前
【SpringMVC】MVC中Controller的配置 、RestFul的使用、页面重定向和转发
java·笔记·后端·学习·spring·mvc·restful
linyb极客之路36 分钟前
干货来袭!5 分钟学会快速实现责任链,效率直接拉满!
java
创码小奇客40 分钟前
保姆级 Talos 超参数优化实战指南:从入门到封神
java·后端·架构