현재 위치: > 최신 기사 목록> Filter_var_Array 및 사용자 정의 필터로 데이터를 정리하십시오

Filter_var_Array 및 사용자 정의 필터로 데이터를 정리하십시오

gitbox 2025-05-29

PHP에서 데이터 필터링 및 검증은 응용 프로그램 보안 및 안정성을 보장하는 핵심 링크입니다. PHP는 필터 _var_array가 다차원 배열 데이터를 처리하기위한 매우 실용적인 도구 인 강력한 필터 기능 세트를 제공합니다. 다양한 내장 필터를 지원할뿐만 아니라 사용자 정의 필터링 기능을 결합하여보다 정확하고 복잡한 데이터 필터링을 달성 할 수 있습니다.

이 기사는 Custom Filter와 결합하여 복잡한 데이터의 효율적인 필터링을 완료하기 위해 Filter_Var_Array를 사용하는 방법을 자세히 설명합니다.


1. Filter_var_Array 소개

filter_var_array 는 배열의 요소에 다른 필터링 규칙을 적용하는 데 사용됩니다. 두 가지 매개 변수를받습니다.

  • 첫 번째 매개 변수는 필터링 할 배열입니다.

  • 두 번째 매개 변수는 각 키에 해당하는 필터를 정의하는 연관 배열입니다.

예:

 <?php
$data = [
    'email' => '[email protected]',
    'age' => '25',
];

$filters = [
    'email' => FILTER_VALIDATE_EMAIL,
    'age' => [
        'filter' => FILTER_VALIDATE_INT,
        'options' => ['min_range' => 18, 'max_range' => 99]
    ],
];

$result = filter_var_array($data, $filters);
var_dump($result);

이 시점에서 $ 결과는 필터링 된 데이터 또는 False를 반환합니다.


2. 사용자 정의 필터를 사용하십시오

내장 필터는 대부분의 요구를 충족하지만 일부 복잡한 데이터는 문자열 형식의 복잡한 검증, 크로스 필드 검증 등과 같은 사용자 정의 로직이 필요합니다.

filter_var_array는 사용자 정의 함수와 결합 된 Filter_Callback의 구현을 지원합니다.

 <?php
function custom_filter($value) {
    // 예:글자와 숫자 만 허용됩니다,그리고 길이는입니다5도착하다10캐릭터
    if (preg_match('/^[a-zA-Z0-9]{5,10}$/', $value)) {
        return $value;
    }
    return false;
}

$data = [
    'username' => 'User123',
    'email' => 'invalid-email',
];

$filters = [
    'username' => [
        'filter' => FILTER_CALLBACK,
        'options' => 'custom_filter',
    ],
    'email' => FILTER_VALIDATE_EMAIL,
];

$result = filter_var_array($data, $filters);
var_dump($result);

3. 복잡한 예제 필터 _var_array를 사용자 정의 필터와 결합합니다

다음의 복잡한 데이터 구조가 있다고 가정하면 다음 필터링 규칙이 필요합니다.

  • 사용자 이름 : 5-15 alphanumeric 숫자, 밑줄은 문자로 시작해야합니다.

  • 이메일 : 표준 사서함 형식.

  • 나이 : 18-65 사이의 정수.

  • 웹 사이트 : 법적 URL이어야하며 도메인 이름은 gitbox.net 이어야합니다.

샘플 코드는 다음과 같습니다.

 <?php
function validate_username($value) {
    if (preg_match('/^[a-zA-Z][a-zA-Z0-9_]{4,14}$/', $value)) {
        return $value;
    }
    return false;
}

function validate_website($url) {
    // 먼저 확인하십시오URL체재
    if (!filter_var($url, FILTER_VALIDATE_URL)) {
        return false;
    }
    // 도메인 이름 부분을 해결하십시오
    $host = parse_url($url, PHP_URL_HOST);
    // 도메인 이름은이어야합니다 gitbox.net
    if ($host === 'gitbox.net') {
        return $url;
    }
    return false;
}

$data = [
    'username' => 'User_01',
    'email' => '[email protected]',
    'age' => '30',
    'website' => 'https://gitbox.net/project',
];

$filters = [
    'username' => [
        'filter' => FILTER_CALLBACK,
        'options' => 'validate_username',
    ],
    'email' => FILTER_VALIDATE_EMAIL,
    'age' => [
        'filter' => FILTER_VALIDATE_INT,
        'options' => ['min_range' => 18, 'max_range' => 65],
    ],
    'website' => [
        'filter' => FILTER_CALLBACK,
        'options' => 'validate_website',
    ],
];

$result = filter_var_array($data, $filters);

if ($result === false || in_array(false, $result, true)) {
    echo "데이터 검증에 실패했습니다\n";
} else {
    echo "데이터 검증이 통과되었습니다\n";
    var_dump($result);
}

4. 요약

  • Filter_var_Array 는 배치 데이터 필터링을 처리하기위한 강력한 도구입니다.

  • 내장 필터는 대부분의 표준 데이터 유형에 적합합니다.

  • Filter_Callback은 사용자 정의 기능과 결합하여 복잡한 규칙을 정확하게 확인할 수 있습니다.

  • URL 검증과 결합하면 도메인 이름 부분을 parse_url을 사용하여 사용자 정의 필터링 할 수 있습니다.

이 기술 세트를 마스터하면 복잡한 사용자 입력 데이터를 수신하고 처리 할 때 PHP 응용 프로그램의 보안 및 정확성을 크게 향상시킬 수 있습니다.