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

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

admin6小时前技术分享10
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

分享给朋友:
返回列表

上一篇:gif 转 lottie json

没有最新的文章了...

相关文章

php-cgi占用太多cpu资源而导致服务器响应过慢 利用进程和Linux的proc 定位耗资源文件

php-cgi占用太多cpu资源而导致服务器响应过慢 利用进程和Linux的proc 定位耗资源文件

在此环境下,一般php-cgi运行是非常稳定的,但也遇到过php-cgi占用太多cpu资源而导致服务器响应过慢,我所遇到的php-cgi进程占用cpu资源过多的原因有: 1. 一些php的扩展与php版本兼容存在问题,实践证明 e...

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

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

php Aes 加密模式ECB填充pkcs5padding base64

最近做支付项目用到了aes加密不过试了好多办法总是和官方给出的结果不一样,找了很久终于找到了测试结果同 http://tool.chacuo.net/cryptaes/ <?php /**  * [Aes&nb...

用apicloud 免费,简单封装一个wap手机网站成android app

用apicloud 免费,简单封装一个wap手机网站成android app

APICloud是国内较早布局低代码开发的平台之一,其发布的低代码效率工具Plus Mode,为IT项目中每个角色提供专业工具,将需求分析、产品原型、UI设计、前端开发、后端开发紧密衔接,并基于行业大数据对前置环节进行复用,最终缩减大量重复...

python3 selenium webdriver.Chrome php 爬取汽车之家所有车型详情数据[开源版]

介绍本接口是车型库api的补充,用于爬取汽车之家所有车型详情数据开源地址:https://gitee.com/web/CarApi/tree/master/python软件架构python3 selenium webdriver.Chrom...

​CentOS 安装libsodium 支持 crypto_aead_aes256gcm_decrypt 兼容php5.6,php7.2

微信小微商户下载证书返回的密文用 AEAD_AES_256_GCM 算法 解密的方法。其中用到了 string sodium_crypto_aead_aes256gcm_decrypt ( string $ci...

发表评论

访客

看不清,换一张

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