您现在的位置是:网站首页>

通过身份证号码提取用户身份信息

草谷2019-03-30

简介通过新旧身份证号码,提取用户的生日年龄、性别、是否未成年等信息。

直接上代码

/**
 * 从身份证中提取生日
 * @param $IDCard
 * @return mixed
 */
function getIDCardInfo($IDCard)
{
    $result['error'] = 0; //0:未知错误,1:身份证格式错误,2:无错误
    $result['flag']  = ''; //0标示成年,1标示未成年
    $result['tdate'] = ''; //生日,格式如:2012-11-15
    if (!preg_match("/^[1-9]([0-9a-zA-Z]{17}|[0-9a-zA-Z]{14})$/i", $IDCard)) {
        $result['error'] = 1;
        return $result;
    } else {
        if (strlen($IDCard) == 18) {
            $tyear  = intval(substr($IDCard, 6, 4));
            $tmonth = substr($IDCard, 10, 2);
            $tday   = substr($IDCard, 12, 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 {
                $tdate = $tyear . "-" . $tmonth . "-" . $tday;
                if ((time() - mktime(0, 0, 0, $tmonth, $tday, $tyear)) > 18 * 365 * 24 * 60 * 60) {
                    $flag = 0;
                } else {
                    $flag = 1;
                }
            }
        } 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 {
                $tdate = $tyear . "-" . $tmonth . "-" . $tday . " 00:00:00";
                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)

上一篇: 没有更多了

下一篇: 没有更多了

相关文章

文章评论