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

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

admin9个月前 (07-08)技术分享678
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函数实现” 的相关文章

linux centos svn搭建及网站同步更新

以前上线的项目都是用ftp来更新的.后来技术人员多了,ftp的弊端就出来了.所以在这里给大家介绍一下我们现在正在使用的svn同步修改更新的方案.原理很简单主要是用到了svn的hooks功能.即本地提交到服务器的svn服务器.然后svn服务器…

关于微信第三方平台(全网发布检测)检测流程以及踩到的坑

关于微信第三方平台(全网发布检测)检测流程以及踩到的坑

能点到全网发布这一步,说明你已经弄好了获取component_verify_ticket,component_access_token等这些参数,通常这个时候点击全网发布只会有这两个失败。如果其他失败的那就要好好检查一下你的代码了,或者查看…

[Windows] Adobe Flash Player 34.0.0.92及可用版修改方法

[Windows] Adobe Flash Player 34.0.0.92及可用版修改方法

随着 2021 年的到来,Adobe Flash Player 也迎来了告别,Adobe 在 2020 年 12 月 31 日后将不再支持 Flash Player。其实早在 2017 年,Adobe 公司就已宣布,计划在 2020 年底逐…

apicloud影视APP源码 无需后台

apicloud影视APP源码 无需后台

介绍集合vip影视接口到一个android app中 方便观看各平台影视资源及直播开源地址:https://gitee.com/web/vip_yingshi软件架构使用apicloud搭建影视APP源码,无后台,调用接口同步api解析网址…

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

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

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

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

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

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

发表评论

访客

看不清,换一张

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