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。

相关推荐
Just_Paranoid1 分钟前
【SystemUI】基于 Android R 实现下拉状态栏毛玻璃背景
android·canvas·systemui·renderscript
Chengbei113 分钟前
CVE-2025-24813 Tomcat 最新 RCE 分析复现
java·安全·web安全·网络安全·tomcat·系统安全·网络攻击模型
vocal4 分钟前
【我的AOSP第一课】Android bootanim 的启动
android
shenshizhong5 分钟前
Compose + Mvi 架构的玩android 项目,请尝鲜
android·架构·android jetpack
Chuck_Chan5 分钟前
Launcher3模块化-组件化
android
AAA简单玩转程序设计8 分钟前
救命!Java 进阶居然还在考这些“小儿科”?
java·前端
总是学不会.13 分钟前
【JUC编程】多线程学习大纲
java·后端·开发
MediaTea16 分钟前
思考与练习(第十章 文件与数据格式化)
java·linux·服务器·前端·javascript
7澄121 分钟前
Maven 项目拆分与聚合实战:分层架构下的多模块开发
java·架构·maven·service·dao·pojo·数据库连接
BingoGo21 分钟前
使用 PHP 和 WebSocket 构建实时聊天应用:完整指南
后端·php