当前位置:首页 > 技术分享

根据身份证号判断是否已成年(年满18岁)的PHP函数实现

admin1年前 (2025-07-08)技术分享955
function isAdultByIdCard($idCard) {
    // 验证身份证长度(15位或18位)
    $length = strlen($idCard);
    if (!in_array($length, [15, 18])) {
        return false; // 无效身份证号
    }

    // 提取出生日期
    $birthDate = '';
    if ($length === 15) {
        // 15位:7-12位为年月日(YYMMDD)
        $birthDate = '19' . substr($idCard, 6, 6);
    } else {
        // 18位:7-14位为年月日(YYYYMMDD)
        $birthDate = substr($idCard, 6, 8);
    }

    // 验证日期有效性
    $year = (int)substr($birthDate, 0, 4);
    $month = (int)substr($birthDate, 4, 2);
    $day = (int)substr($birthDate, 6, 2);
    
    if (!checkdate($month, $day, $year)) {
        return false; // 无效出生日期
    }

    // 计算当前日期和出生日期
    $today = new DateTime();
    $birthday = DateTime::createFromFormat('Y-m-d', "$year-$month-$day");
    
    // 计算年龄
    $age = $today->diff($birthday)->y;

    // 判断是否成年(年满18岁)
    return $age >= 18;
}

// 使用示例
$idCards = [
    '1xxxxx19491231XXXX', // 1949年出生(已成年)
    '4xxxxx20050708XXXX', // 2005年7月8日出生(2025年测试时未成年)
    '3xxxxx20100615XXXX'  // 2010年6月15日出生(未成年)
];

foreach ($idCards as $idCard) {
    $result = isAdultByIdCard($idCard) ? '成年' : '未成年';
    echo "身份证: $idCard - $result\n";
}


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

版权声明:本文由小刚刚技术博客发布,如需转载请注明出处。

本文链接:https://blog.bitefu.net/post/677.html

分享给朋友:

“根据身份证号判断是否已成年(年满18岁)的PHP函数实现” 的相关文章

WPS表格办公—取消科学计数法显示

WPS表格办公—取消科学计数法显示

我们在利用WPS表格与Excel表格进行日常办公时,经常需要制作各种各样的表格,当我们在表格当中输入长数据的时候,表格经常会自动显示为科学计数法,很多人都看不懂科学计数法的意思,那么,我们如何在输入长数字的时候避免显示为科学计数法呢,今天我…

记一次阿里云服务器cc攻击防护 windows 2012 iis8

记一次阿里云服务器cc攻击防护 windows 2012 iis8

上次连续一周左右阿里云服务器都在遭受cc攻击.导致访问量特别大,节假日接口调用特别缓慢或者根本访问不了的情况.本身服务器安装了 网站安全狗(IIS版) .并开始了防cc攻击.但是呢,平时还行,这次压力山大.于是一气之下用pytho…

全世界最快dns分享 Public DNS Server List

偶然发现一个共享全世界最快dns的网站,当然也包含中国了https://public-dns.info/ 中国https://public-dns.info/nameserver/cn.html…

msixbundle怎么打开?win10后缀.MSIX安装包怎么安装使用

msixbundle怎么打开?win10后缀.MSIX安装包怎么安装使用

扩展名为 .msix的文件是Windows应用程序安装程序。微软推出的MSIX 作为EXE,MSI甚至AppX 软件包的替代品。在Windows 10中打开一个.MSIX 文件并开始安装打包的应用程序,只需双击该文件即可。但有也有不少朋友会…

[钉钉]内网穿透之HTTP穿透

[钉钉]内网穿透之HTTP穿透

内网穿透之HTTP穿透更新时间:2021-06-21鉴于很多开发者在临时体验开发时往往没有公网域名或者公网IP,本工具提供了一个公网代理服务,目的是方便开发测试。注意 本工具不保证稳定性,仅适用于开发测试阶段,禁止当作公网域名使用…

实现服务器的代码与Gitee的代码同步更新:通过宝塔的WebHook、Git、Gitee的WebHooks

实现服务器的代码与Gitee的代码同步更新:通过宝塔的WebHook、Git、Gitee的WebHooks

(超详细避坑)实现服务器的代码与Gitee的代码同步更新:通过宝塔的WebHook、Git、Gitee的WebHooks前言一、效果展示二、实现步骤2.1 使用宝塔git生成公钥2.2 创建Gitee仓库,添加公钥2.3 宝塔安装WebHo…

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。