주민등록번호를 확인하고 나이를 추출하는 PHP 함수

要实现一个 PHP 函数来验证身份证号码并提取年龄,可以使用以下代码:

/**
 * 验证身份证号码并提取年龄
 * @param $id
 * @return false|int|string
 */
function isIdno($id){
    
    
    $id = strtoupper($id);
    $regx = "/(^\d{15}$)|(^\d{17}([0-9]|X)$)/";
    $arr_split = array();
    if(!preg_match($regx, $id)){
    
    
        return false;
    }
    if(15==strlen($id)){
    
    //检查15位
        $regx = "/^(\d{6})+(\d{2})+(\d{2})+(\d{2})+(\d{3})$/";
        @preg_match($regx, $id, $arr_split);
        //检查生日日期是否正确
        $dtm_birth = "19".$arr_split[2] . '/' . $arr_split[3]. '/' .$arr_split[4];
        if(!strtotime($dtm_birth)) {
    
    
            return false;
        }else{
    
    
            //提取年龄
            $age = date("Y") - (int)substr($id, 6, 2);
            return $age;
        }
    }else{
    
    //检查18位
        $regx = "/^(\d{6})+(\d{4})+(\d{2})+(\d{2})+(\d{3})([0-9]|X)$/";
        @preg_match($regx, $id, $arr_split);
        $dtm_birth = $arr_split[2] . '/' . $arr_split[3]. '/' .$arr_split[4];

        if(!strtotime($dtm_birth)){
    
    //检查生日日期是否正确
            return false;
        }else{
    
    
            //提取年龄
            $age = date("Y") - (int)substr($id, 6, 4);
            return $age;
        }
    }
}

주요 구현 원칙은 먼저 ID 번호를 대문자로 변환한 다음 정규식을 사용하여 형식이 올바른지 확인하는 것입니다. 형식이 올바르면 생년월일이 올바른지 확인한 다음 ID 번호의 길이에 따라 다른 처리를 수행합니다. 생년월일이 정확하면 함수는 나이를 추출하여 반환합니다. 생년월일이 올바르지 않으면 함수는 false를 반환합니다.

추천

출처blog.csdn.net/u012134073/article/details/135202679