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

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

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

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

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

PHP和Redis实现在高并发下的抢购及秒杀功能

抢购、秒杀是平常很常见的场景,面试的时候面试官也经常会问到,比如问你淘宝中的抢购秒杀是怎么实现的等等。抢购、秒杀实现很简单,但是有些问题需要解决,主要针对两个问题:一、高并发对数据库产生的压力二、竞争状态下如何解决库存的正确减少("…

PIP 更换国内安装源linux/windows

pip国内的一些镜像  阿里云 http://mirrors.aliyun.com/pypi/simple/   中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/   豆瓣(…

在CentOS 5.x 6.x里使用yum源 换阿里云国内源换vault.centos.org源

阿里云CentOS 5 的系统,无法用yum来安装应用软件。  原因:CentOS 5 在2017-03-31日已经结束支持,不再提供维护更新,所以包括阿里云镜像站的文件可能都是过时或已经有部分文件缺失。 &n…

抢先体验太阳谷!20H1、20H2、21H1替换“Dev版新图标”

尽量不要替换shell32.dll.mun和zipfldr.dll.mun,这两老哥可能会带来无法预测的风险!不解除被替换文件的硬链接,已确定会导致无法安装质量更新!(详见H大测评)单替换imageres.dll.mun新图标覆盖率基本可达…

阿里云盘 分享脚本 抢先实现文件分享功能

Win端基本所有浏览器均可进行安装安装地址:https://bbs.tampermonkey.net.cn/thread-427-1-1.html如何安装:Tampermoneky安装:谷歌浏览器参考:https://bbs.tamperm…

发表评论

访客

看不清,换一张

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