php正则获取身份证号年龄

<?php
$idCard = "11010xxxxxxxxxxxx0";

// 获取身份证年龄
function GetAgeWithIdentificationNumber(string $idCard) :int
{
    $age = 0;
    $preg = "/^[1-9]\d{5}(18|19|20)(\d{2})((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/";
    if (preg_match($preg, $idCard, $matches)) {
        $birYear = "{$matches[1]}{$matches[2]}";
        $birMonth = intval($matches[3]);
        $age = date("Y") - $birYear;
        if (date("m") < $birMonth) {
            $age--;
        }
    }
    return $age;
}

var_dump(GetAgeWithIdentificationNumber($idCard));
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容