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。

相关推荐
七夜zippoe12 分钟前
为什么 2026 年每个 Java 团队都该懂 AI Agent
java·开发语言·人工智能
码农阿豪13 分钟前
我把 OpenClaw 装进旧安卓手机后,又折腾了 3 天:飞书、ADB、SSH 全部打通
android·智能手机·飞书
DK1858383225220 分钟前
【源码开源部署】电竞代练护航陪玩小程序:全游戏服务平台完整解决方案(附宝塔部署教程)
游戏·微信小程序·uni-app·开源·php
时凌云.21 分钟前
【2026最新】JDK 下载安装与环境配置全教程(Windows/Mac/Linux 三平台,零基础友好)
java·linux·macos
Despacito100637 分钟前
Java后端性能探查工具速查表
java·开发语言
蓝桉柒71 小时前
下载idea,用idea输入一个程序
java·ide·intellij-idea
蓝桉柒71 小时前
java字面量,变量
java
有什么事1 小时前
把安卓搬上云端:云手机系统改造与内核优化拆解
android·智能手机
典典分享指南1 小时前
一品牌多产品线的 GEO 内容矩阵:从策略到落地
java·c#·bash·symfony
广州灵眸科技有限公司2 小时前
从手动三步到上电即连:4G模组systemd开机自连方案
linux·运维·服务器·开发语言·网络·人工智能·php