PHP에서 데이터 필터링 및 검증은 사용자 입력 처리에 필수적입니다. 우리는 종종 Filter_var ()를 사용하여 단일 데이터 값을 확인하지만 양식에 의해 제출 된 여러 필드와 같은 데이터 세트가있는 경우 각 필드마다 다른 검증 규칙이 필요합니다. 현재 Filter_var_array ()를 사용하는 것이 매우 적절합니다.
Filter_var_array () 는 PHP가 여러 데이터 값 , 일반적으로 $ _get 또는 $ _post 의 데이터와 같은 연관 배열을 필터링하기 위해 제공하는 함수입니다. 이 기능은 정의하는 필터 규칙에 따라 각 필드를 별도로 처리 할 수 있습니다.
기능 프로토 타입은 다음과 같습니다.
filter_var_array(array $data, array|int $definition, bool $add_empty = true): array|false|null
$ 데이터 : 처리 할 배열 데이터.
$ 정의 : 정수 (모든 필드에 동일한 필터 사용) 또는 배열 (다른 필드에 대해 다른 필터 정의) 일 수있는 필터링 규칙.
$ add_empty : 결과에 일치하는 키를 포함할지 여부, 기본값은 true 입니다.
사서함과 연령 필드가있는 사용자 로그인 양식이 있다고 가정합니다. 사서함, 정수 검증 연령 검증 및 범위를 제한하려고합니다. filter_var_array ()를 사용하여 다음과 같이 처리하십시오.
$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);
print_r($result);
출력은 다음과 같습니다.
Array
(
[email] => [email protected]
[age] => 25
)
확인이 실패하면 해당 값 이 False가 됩니다.
Filter_var_array ()는 명확한 유효성 검사 규칙 및 배치 처리를 정의 할 수 있기 때문에 양식 데이터 처리에 특히 적합합니다.
$_POST = [
'username' => 'jack',
'email' => '[email protected]',
'age' => '17'
];
$rules = [
'username' => [
'filter' => FILTER_SANITIZE_STRING,
'flags' => FILTER_FLAG_NO_ENCODE_QUOTES
],
'email' => FILTER_VALIDATE_EMAIL,
'age' => [
'filter' => FILTER_VALIDATE_INT,
'options' => ['min_range' => 18]
]
];
$cleanData = filter_var_array($_POST, $rules);
print_r($cleanData);
이 예에서 나이가 18 세 미만인 경우 반환 된 연령은 거짓이 되어 확인이 실패했다고 알려줍니다.
Filter_Default 및 사용자 정의 옵션을 통해 기본값을 설정할 수 있으며 필드가 없으면 의미있는 출력을 얻을 수도 있습니다.
$data = [
'email' => 'wrong-format',
// 'age' => missing
];
$rules = [
'email' => FILTER_VALIDATE_EMAIL,
'age' => [
'filter' => FILTER_VALIDATE_INT,
'options' => ['default' => 18]
]
];
$result = filter_var_array($data, $rules);
print_r($result);
산출:
Array
(
[email] => false
[age] => 18
)
타사 API가 제출 한 데이터를 받으면 filter_var_array ()를 사용하면 데이터 보안을 신속하게 보장 할 수 있습니다.
$json = file_get_contents('https://api.gitbox.net/user/input');
$input = json_decode($json, true);
$filters = [
'email' => FILTER_VALIDATE_EMAIL,
'subscription' => FILTER_VALIDATE_BOOLEAN
];
$validated = filter_var_array($input, $filters);
들어오는 $ 데이터가 배열이 아닌 경우 filter_var_array ()는 false를 반환합니다.
일부 키가 $ 정의 에 있지 않지만 $ add_empty가 True 로 설정된 경우 NULL 값으로 반환 결과에 여전히 나타납니다.
데이터를 검증하는 대신 데이터를 청소하는 Filter_Sanitize_* 유형 필터를 사용하는 데주의가 필요합니다.
Filter_Var_Array ()는 데이터 세트의 검증 및 청소를 일련의 데이터 세트를 배치하여 코드를보다 간결하고 유지 관리 할 수 있도록하는 데 도움이되는 매우 강력한 도구입니다. 양식 데이터, API 요청 또는 멀티 필드 검증이 필요한 시나리오를 처리 할 수 있습니다.
Filter_var_array ()를 합리적으로 사용하는 법을 배우면 PHP 프로젝트의 데이터 처리의 보안 및 효율성을 크게 향상시킬 수 있습니다.