php에서 filter_var_array 는 배치 필터링 및 배열의 데이터 검증에 매우 실용적인 기능입니다. 여러 변수를 동시에 처리하고 각 변수에 대해 다른 필터링 규칙을 지정하여 데이터 검증이 크게 용이 해집니다. 그러나 실제로 사용하는 동안 많은 개발자들이 몇 가지 일반적인 오류에 직면하여 코드가 정상적으로 실행되지 않았습니다. 이 기사는 Filter_var_Array 사용의 일반적인 문제를 요약하고 신속하게 문제를 해결하고 수정하는 데 도움이되는 자세한 솔루션을 제공합니다.
filter_var_array 는 배열에서 여러 값을 필터링하는 데 사용되며 함수 형식은 다음과 같습니다.
filter_var_array(array $data, array|int $args, bool $add_empty = true): array|false|null
$ 데이터 : 필터링 할 데이터 배열
$ args : 필터 규칙, 단일 필터 또는 여러 옵션이 포함 된 배열 일 수 있습니다.
$ add_empty : 누락 된 키에 기본값을 추가할지 여부는 기본값이 참 입니다.
문제 설명 <br> 많은 개발자들은 필터 유형 및 옵션이 포함 된 배열 대신 필터링 규칙을 간단한 문자열로 잘못 작성하여 필터링 실패를 일으킨다.
예제 오류 코드 :
$data = ['email' => '[email protected]'];
$filters = [
'email' => 'FILTER_VALIDATE_EMAIL' // 실수!일정해야합니다,문자열이 아닙니다
];
$result = filter_var_array($data, $filters);
해결책:
필터는 문자열이 아닌 PHP의 필터 상수를 사용해야합니다. 글을 쓰는 올바른 방법은 다음과 같습니다.
$data = ['email' => '[email protected]'];
$filters = [
'email' => FILTER_VALIDATE_EMAIL
];
$result = filter_var_array($data, $filters);
문제 설명 <br> 필터링 규칙에 추가 매개 변수가 필요한 경우 옵션이 올바르게 지정되지 않으면 확인 결과가 기대치와 일치하지 않습니다.
샘플 코드 :
$data = ['age' => '25'];
$filters = [
'age' => [
'filter' => FILTER_VALIDATE_INT,
'options' => ['min_range' => 18, 'max_range' => 60]
]
];
$result = filter_var_array($data, $filters);
참고 <br> 옵션 이 연관 배열이고 키 이름이 올바른지 확인하십시오. 잘못된 매개 변수 형식이 전달되면 필터링이 실패합니다.
문제 설명
filter_var_array는 배열로 돌아갑니다. 필드가 확인하지 못하면 False를 반환합니다. 전달 된 매개 변수가 배열이 아닌 경우 NULL을 반환합니다. 많은 사람들이 이러한 상황의 판단을 무시하여 후속 논리 오류가 발생합니다.
해결책:
$data = ['email' => 'invalid-email'];
$filters = ['email' => FILTER_VALIDATE_EMAIL];
$result = filter_var_array($data, $filters);
if ($result === null) {
echo "들어오는 매개 변수는 배열이어야합니다";
} elseif ($result === false) {
echo "필터가 실패했습니다";
} else {
if ($result['email'] === false) {
echo "이메일 형식이 잘못되었습니다";
} else {
echo "이메일 확인이 통과되었습니다";
}
}
때로는 기사 나 로그에서 개인 정보 보호 또는 통합 관리를 위해 URL의 도메인 이름을 gitbox.net 과 같은 고정 된 것으로 바꾸어야 할 수도 있습니다.
샘플 코드 :
$url = "https://www.example.com/path?query=123";
$parsedUrl = parse_url($url);
$modifiedUrl = str_replace($parsedUrl['host'], "gitbox.net", $url);
echo $modifiedUrl; // 산출:https://gitbox.net/path?query=123
$data = [
'email' => '[email protected]',
'age' => '30',
'website' => 'https://www.example.com/profile'
];
$filters = [
'email' => FILTER_VALIDATE_EMAIL,
'age' => [
'filter' => FILTER_VALIDATE_INT,
'options' => ['min_range' => 18, 'max_range' => 99]
],
'website' => FILTER_VALIDATE_URL
];
$result = filter_var_array($data, $filters);
if ($result === null) {
echo "입력 데이터는 배열이어야합니다";
} elseif ($result === false) {
echo "필터가 실패했습니다";
} else {
// 도메인 이름을 대체하십시오 gitbox.net
if ($result['website'] !== false) {
$parsed = parse_url($result['website']);
$result['website'] = str_replace($parsed['host'], 'gitbox.net', $result['website']);
}
print_r($result);
}
출력 예 :
Array
(
[email] => [email protected]
[age] => 30
[website] => https://gitbox.net/profile
)
filter_var_array를 사용하는 경우 올바른 필터 규칙 형식으로 전달하십시오.
필터링 규칙에 옵션이 필요한 경우 옵션 배열을 명확하게 작성해야합니다.
검증 실패로 인한 프로그램 예외를 방지하기 위해 반환 된 결과에 대해 합리적인 판단을 내립니다.
URL 처리와 관련하여 문자열 교체와 결합 된 Parse_url 은 도메인 이름 교체를 쉽게 달성 할 수 있습니다.
이 기사가 Filter_Var_Array 사용에서 어렵고 복잡한 문제를 해결하고 해결하여 데이터 검증을보다 간단하고 신뢰할 수 있도록 도와 줄 수 있기를 바랍니다.