FILTER_SANITIZE_STRING이란?
FILTER_SANITIZE_STRING 상수는 문자열에서 HTML 태그를 제거하고 특수 문자를 인코딩하는 역할을 합니다. 주로 filter_var() 함수와 함께 사용되어 사용자 입력값에서 불필요한 태그나 특수 문자를 걸러낼 때 활용됩니다.
참고: 이 필터는 PHP 8.1.0부터 공식적으로 지원 중단(deprecated)되었습니다. 신규 프로젝트에서는 htmlspecialchars() 또는 strip_tags() 같은 대체 방법을 사용하는 것이 좋습니다.
사용 가능한 플래그
FILTER_FLAG_NO_ENCODE_QUOTES − 작은따옴표(')와 큰따옴표(")를 인코딩하지 않습니다.
FILTER_FLAG_STRIP_LOW − ASCII 값이 32 미만인 문자를 제거합니다.
FILTER_FLAG_STRIP_HIGH − ASCII 값이 127을 초과하는 문자를 제거합니다.
FILTER_FLAG_ENCODE_LOW − ASCII 값이 32 미만인 문자를 인코딩합니다.
FILTER_FLAG_ENCODE_HIGH − ASCII 값이 127을 초과하는 문자를 인코딩합니다.
FILTER_FLAG_ENCODE_AMP − 앰퍼샌드(&) 문자를 HTML 엔티티 형태(&)로 인코딩합니다.
반환값
상수 자체는 어떤 값도 반환하지 않습니다. 실제로 필터링된 문자열은 filter_var() 함수가 반환하며, 이 상수는 해당 함수에 필터 종류를 지정하는 용도로 전달됩니다.
예제 코드
<?php
$var = "<p>£Demo! ££</p>";
$res = filter_var($var, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH);
echo $res;
?>
실행 결과
위 예제를 실행하면 다음과 같은 결과가 출력됩니다.
Demo!
이 예제에서는 FILTER_FLAG_STRIP_HIGH 플래그가 적용되어 ASCII 값이 127을 초과하는 파운드 기호(£)가 모두 제거되고, HTML 태그 역시 삭제되어 순수한 텍스트인 "Demo!"만 남게 됩니다. 이처럼 플래그 조합을 통해 원하는 수준의 문자열 정제가 가능합니다.