PHP에서 데이터 필터링 및 검증은 응용 프로그램 보안 및 안정성을 보장하는 핵심 링크입니다. PHP는 필터 _var_array가 다차원 배열 데이터를 처리하기위한 매우 실용적인 도구 인 강력한 필터 기능 세트를 제공합니다. 다양한 내장 필터를 지원할뿐만 아니라 사용자 정의 필터링 기능을 결합하여보다 정확하고 복잡한 데이터 필터링을 달성 할 수 있습니다.
이 기사는 Custom Filter와 결합하여 복잡한 데이터의 효율적인 필터링을 완료하기 위해 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를 반환합니다.
내장 필터는 대부분의 요구를 충족하지만 일부 복잡한 데이터는 문자열 형식의 복잡한 검증, 크로스 필드 검증 등과 같은 사용자 정의 로직이 필요합니다.
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);
다음의 복잡한 데이터 구조가 있다고 가정하면 다음 필터링 규칙이 필요합니다.
사용자 이름 : 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);
}
Filter_var_Array 는 배치 데이터 필터링을 처리하기위한 강력한 도구입니다.
내장 필터는 대부분의 표준 데이터 유형에 적합합니다.
Filter_Callback은 사용자 정의 기능과 결합하여 복잡한 규칙을 정확하게 확인할 수 있습니다.
URL 검증과 결합하면 도메인 이름 부분을 parse_url을 사용하여 사용자 정의 필터링 할 수 있습니다.
이 기술 세트를 마스터하면 복잡한 사용자 입력 데이터를 수신하고 처리 할 때 PHP 응용 프로그램의 보안 및 정확성을 크게 향상시킬 수 있습니다.