当前位置:首页 > 技术分享 > 正文内容

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

admin2个月前 (07-08)技术分享214
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 = [
    '11010519491231002X', // 1949年出生(已成年)
    '440308200507081234', // 2005年7月8日出生(2025年测试时未成年)
    '35010220100615301X'  // 2010年6月15日出生(未成年)
];

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


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

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

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

分享给朋友:

相关文章

IIS动态IP限制抵御CC攻击和网络爬虫IIS 8 IIS 7 Dynamic IP Address Restrictions

IIS动态IP限制抵御CC攻击和网络爬虫IIS 8 IIS 7 Dynamic IP Address Restrictions

IIS8新增了一个动态IP限制功能,可以限制同一IP的连接数和访问频率。IIS7则可以安装官方模块Dynamic IP Restrictions实现相同功能。IIS8启用方法默认情况下,IIS 8.0是没有安装“IP和域限制”模块的,我们需...

input search更改默认删除按钮的样式

改input输入框search属性下输入文字之后会在输入框最后出现一个默认样式的X不过这个样式不太好看想自定义怎么办呢方法一input[type="search"]::-webkit-search-cancel-butt...

[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 年底逐...

超高性比的斐讯盒子T1,刷第三方YYF固件机教程超级详细版

超高性比的斐讯盒子T1,刷第三方YYF固件机教程超级详细版

家里面买了斐讯盒子T1,必不可少的就是刷机,刷机一直爽,一直刷机一直爽,这样的快乐一般人体会不到。原来斐讯盒子N1,T1,还有斐讯K2P路由器也变成了性价比超高的东东,而且众多大神也带来了超多可玩性非常高的固件和破解。楼主今天扒到了相关超高...

PHP AES加解密 (ECB模式/sha1prng算法/PKCS5Padding和PKCS7Padding补码) ECB 模式不需求设置 iv

php7+ 版本/**  * [AesSecurity aes加密,支持PHP7+]  * 算法模式:ECB  * 密钥长度:128  * 补...

遭遇国外ip抓取或攻击怎么办一招解决禁止海外IP访问

遭遇国外ip抓取或攻击怎么办一招解决禁止海外IP访问

究发现很多网站被攻击都是来自海外的肉鸡,所以禁掉海外IP访问网站也是不错的防护手段,而且国内网站几乎很少有国外用户访问,称之为大局域网也不为过。今天主机吧来教大家如何利用域名解析禁止掉海外IP访问网站。绝大多数域名解析服务商都是提供电信联通...

发表评论

访客

看不清,换一张

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