•filter_var() - 지정된 필터로 하나의 변수를 필터링합니다.
•filter_var_array() - 몇 개의 변수들을 같은, 혹은 다른 필터들로 필터링합니다.
•filter_input - 하나의 입력값을 받은다음, 그걸 필터링합니다.
•filter_input_array - 몇 개의 입력값들을 받은다음 그것들을 같은, 혹은 다른 필터들로 필터링합니다.
아래의 예제에서, filter_var() 함수를 사용해서 정수의 유효성을 확인합니다.
<?php
$int = 123;if(!filter_var($int, FILTER_VALIDATE_INT))
{
echo("Integer is not valid");
}
else
{
echo("Integer is valid");
}
?>
위의 코드에서는 "FILTER_VALIDATE_INT" 필터를 사용해서 변수를 필터링하고 있습니다. 정수가 유효하기 때문에, 위 코드의 출력 결과는 "Interger is valid"가 됩니다.
변수에 정수가 아닌값이 대입될 경우 (예: 123abc), 출력 결과는 "Integer is not valid"가 됩니다.
<?php
if(!filter_has_var(INPUT_GET, "email"))
{
echo("Input type does not exist");
}
else
{
if (!filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL))
{
echo "E-Mail is not valid";
}
else
{
echo "E-Mail is valid";
}
}
?>
예제 코드 설명
위의 예제에는 "GET" 방식으로 보내진 입력 (email)이 하나 있습니다:
1."GET" 타입의 "email" 입력 변수가 존재하는지 확인합니다.
2.입력 변수가 존재한다면, 유효한 e-mail 주소인지 확인합니다.
다중 입력 필터링하기
폼은 거의 대부분 1개의 입력필드 이상으로 구성되어 있습니다. filter_var나 filter_input 함수를 계속해서 반복적으로 호출하지 않으려면, filter_var_array 혹은 filter_input_array 함수를 대신 사용할 수 있습니다.
이번 예제에서는 3개의 GET 변수를 필터링하기 위해서 filter_input_array() 함수를 사용합니다.
입력받게되는 GET 변수는 이름, 나이, 그리고 e-mail 주소입니다:
<?php
$filters = array
(
"name" => array
(
"filter"=>FILTER_SANITIZE_STRING
),
"age" => array
(
"filter"=>FILTER_VALIDATE_INT,
"options"=>array
(
"min_range"=>1,
"max_range"=>120
)
),
"email"=> FILTER_VALIDATE_EMAIL,
);$result = filter_input_array(INPUT_GET, $filters);if (!$result["age"])
{
echo("Age must be a number between 1 and 120.<br />");
}
elseif(!$result["email"])
{
echo("E-Mail is not valid.<br />");
}
else
{
echo("User input is valid");
}
?>
예제 코드 설명
위의 예제에는 "GET" 방식으로 보내진 3개의 입력 (이름, 나이, email)이 있습니다:
1.입력 변수들의 이름과 지정된 입력 변수들에 대해 사용된 필터들을 포함하는 배열을 설정합니다.
2.GET 입력 변수들, 배열과 함께 filter_intput_array() 함수를 호출합니다.
3.$result 변수에 담겨있는 "age", "email" 변수가 올바른 입력인지 확인합니다. (입력 변수가 올바르지 않다면, filter_input_array() 함수 이후에서 거짓이되서 알맞은 오류 메시지가 표시됩니다.)
filter_input_array() 함수의 두번째 파라미터는 배열이나 하나의 filter ID가 될 수 있습니다.
만일 파라미터가 단일 filter ID 라면 입력 배열의 모든 값은 지정된 필터에 의해서 필터링됩니다.
만일 파라미터가 배열이라면 아래의 규칙들을 따라야 합니다:
•입력 변수들을 하나의 배열키로서 포함하고 있는 Associative 배열이어야만 합니다. ("age" 입력 변수처럼 말이지요)
•배열값은 filter ID 혹은 필터, 플래그, 옵션을 지정하고 있는 배열이어야 합니다.