从身份证截取生日,判断是否为成人

从身份证截取生日,判断是否为成人

直接上代码

if (!function_exists('getIDCardInfo')) {
    /**
     * @param $IDCard 从身份证截取生日,判断是否为成人
     * @param int $format
     * @return mixed
     */
    function getIDCardInfo($IDCard, $format = 1)
    {
        $tdate = 0;
        $tyear = 0;
        $tmonth = 0;
        $tday = 0;
        $result['error'] = 0;//0:未知错误,1:身份证格式错误,2:无错误
        $result['flag'] = '';//0标示成年,1标示未成年
        $result['tdate'] = '';//生日,格式如:2012-11-15
        if (!preg_match("/^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$/", $IDCard)) {
            $result['error'] = 1;
            return $result;
        } else {
            if (strlen($IDCard) == 18) {
                $tyear = intval(substr($IDCard, 6, 4));
                $tmonth = intval(substr($IDCard, 10, 2));
                $tday = intval(substr($IDCard, 12, 2));
            } elseif (strlen($IDCard) == 15) {
                $tyear = intval("19" . substr($IDCard, 6, 2));
                $tmonth = intval(substr($IDCard, 8, 2));
                $tday = intval(substr($IDCard, 10, 2));
            }

            if ($tyear > date("Y") || $tyear < (date("Y") - 100)) {
                $flag = 0;
            } elseif ($tmonth < 0 || $tmonth > 12) {
                $flag = 0;
            } elseif ($tday < 0 || $tday > 31) {
                $flag = 0;
            } else {
                if ($format) {
                    $tdate = $tmonth . "-" . $tday;
                } else {
                    $tdate = $tmonth . "-" . $tday;
                }

                if ((time() - mktime(0, 0, 0, $tmonth, $tday, $tyear)) > 18 * 365 * 24 * 60 * 60) {
                    $flag = 0;
                } else {
                    $flag = 1;
                }
            }
        }
        $result['error'] = 2;//0:未知错误,1:身份证格式错误,2:无错误
        $result['isAdult'] = $flag;//0标示成年,1标示未成年
        $result['birthday'] = $tdate;//生日日期
        return $result;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值