PHP FILTER_CALLBACK 상수란?
FILTER_CALLBACK은 PHP 필터 확장 모듈에서 제공하는 특별한 상수로, 개발자가 직접 정의한 함수(사용자 정의 함수)를 호출하여 값을 필터링하는 역할을 합니다.
다른 필터 상수와 달리 미리 정의된 검증 규칙에 의존하지 않고, 원하는 로직을 자유롭게 구현할 수 있다는 점이 가장 큰 장점입니다. 내장 함수뿐만 아니라 익명 함수(클로저)나 클래스 메서드도 함께 사용할 수 있습니다.
반환값
FILTER_CALLBACK 상수 자체는 별도의 값을 반환하지 않습니다. 실제 반환 결과는 filter_var() 함수가 콜백 함수의 실행 결과를 그대로 돌려주는 방식으로 결정됩니다. 즉, 콜백 함수가 처리한 최종 값이 필터링 결과가 됩니다.
기본 문법
filter_var($value, FILTER_CALLBACK, array("options" => "콜백함수명"));옵션 배열의 options 키에 적용할 함수 이름을 문자열로 지정하거나, 익명 함수를 직접 전달할 수 있습니다.
사용 예제
다음 예제는 문자열의 대소문자를 변환하는 코드입니다. 여기서는 PHP에 이미 내장되어 있는 strtolower() 함수를 콜백으로 활용했습니다.
<?php
$string = "DEMO TEXT!";
echo filter_var($string, FILTER_CALLBACK, array("options" => "strtolower"));
?>
실행 결과
위 코드를 실행하면 다음과 같이 대문자가 소문자로 변환된 결과를 확인할 수 있습니다.
demo text!
익명 함수 활용하기
PHP 5.3 이상에서는 익명 함수(클로저)를 사용해 더 유연하게 커스텀 필터를 만들 수 있습니다.
<?php
$input = " <b>Hello</b> World ";
$clean = filter_var($input, FILTER_CALLBACK, [
"options" => function($str) {
return trim(strip_tags($str));
}
]);
echo $clean; // 출력: Hello World
?>
정리
FILTER_CALLBACK은 표준 필터만으로는 해결하기 어려운 특수한 데이터 검증·변환 작업에 매우 유용합니다. 다만 콜백 함수에 유효성 검사 로직을 직접 구현해야 하므로, 보안에 민감한 입력값을 다룰 때는 충분히 신중하게 작성해야 합니다.