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。

相关推荐
jackson凌12 分钟前
【Java学习笔记】【第一阶段项目实践】房屋出租系统(面向对象版本)
java·笔记·学习
带刺的坐椅16 分钟前
Solon Ai Flow 编排开发框架发布预告(效果预览)
java·ai·solon·dify·solon-flow
2302_8097983230 分钟前
【JavaWeb】JDBC
java·开发语言·servlet
与籍同行1 小时前
开发过程中遇到Selinux问题分析
android·selinux
小刘不想改BUG1 小时前
LeetCode LCR 010 和为 K 的子数组 (Java)
java·算法·leetcode
MeyrlNotFound1 小时前
(二十一)Java集合框架源码深度解析
java·开发语言
正在走向自律1 小时前
2025年、2024年最新版IntelliJ IDEA下载安装过程(含Java环境搭建+Maven下载及配置)
java·jvm·jdk·maven·intellij-idea
不会就选C.1 小时前
【开源分享】健康饮食管理系统(双端+论文)
java·spring boot·开源·毕业设计
永远有多远.1 小时前
【高频面试题】LRU缓存
java·缓存·面试
Ten peaches1 小时前
Selenium-Java版(环境安装)
java·前端·selenium·自动化