PHP의 filter_var_array() 함수는 배열에 담긴 여러 변수를 한 번에 검증·필터링할 수 있게 해주는 함수입니다. 개별 변수마다 filter_var()를 반복 호출하는 대신 필터 규칙을 배열로 정의해 한꺼번에 적용할 수 있어, 폼 데이터나 외부 입력값을 처리할 때 코드가 훨씬 간결해집니다.
문법
filter_var_array(arrayname, parameters)
매개변수
arrayname − 필터링할 데이터가 담겨 있는 배열입니다.
parameters − 각 키에 어떤 필터를 적용할지 지정하는 필터 인수 배열입니다.
반환값
filter_var_array() 함수는 성공 시 요청된 변수들의 값을 담은 배열을 반환하고, 실패하면 false를 반환합니다. 참고로 특정 변수의 필터링이 실패하면 해당 값은 false가 되고, 배열에 존재하지 않는 변수라면 NULL이 됩니다.
사용 예제
<?php
$arr = Array (
"stname" => "Jack",
"stmarks" => "95",
"stemail" => "jack@abcde.com",
);
$filters = array (
"stname" => array (
"filter"=>FILTER_CALLBACK,
"flags"=>FILTER_FORCE_ARRAY,
"options"=>"ucwords"
),
"stmarks" => array (
"filter"=>FILTER_VALIDATE_INT,
"options"=>array (
"min_range"=>1,
"max_range"=>100
)
),
"stemail"=> FILTER_VALIDATE_EMAIL,
);
print_r(filter_var_array($arr, $filters));
?>
위 예제의 실행 결과는 다음과 같습니다.
Array ( [stname] => Jack [stmarks] => 95 [stemail] => jack@abcde.com )
예제 동작 방식
stname − FILTER_CALLBACK 필터와 ucwords 옵션을 조합해 이름의 첫 글자를 대문자로 변환하고, FILTER_FORCE_ARRAY 플래그로 결과를 배열 형태로 강제합니다.
stmarks − FILTER_VALIDATE_INT 필터로 정수 여부를 검사하며, min_range와 max_range 옵션 덕분에 값이 반드시 1~100 사이여야 통과됩니다.
stemail − FILTER_VALIDATE_EMAIL 상수만 지정해 이메일 주소 형식이 올바른지 간단히 검증합니다.
이처럼 filter_var_array()를 활용하면 문자열 변환, 숫자 범위 검사, 이메일 형식 확인 등 서로 다른 필터 작업을 하나의 호출로 처리할 수 있어 입력값 검증 로직을 깔끔하게 관리할 수 있습니다.