FILTER_SANITIZE_SPECIAL_CHARS 상수는 특수 문자를 HTML 엔티티 형태로 이스케이프(escape) 처리하는 PHP 필터입니다. 사용자 입력에 포함된 <, >, &, 큰따옴표(") 같은 문자를 각각 <, >, &, "로 변환해 주기 때문에 XSS 공격을 방지하고 데이터를 안전하게 출력할 때 매우 유용합니다.
사용 가능한 플래그(Flags)
FILTER_FLAG_STRIP_LOW — ASCII 값이 32 미만인 제어 문자를 제거합니다.
FILTER_FLAG_STRIP_HIGH — ASCII 값이 127 초과인 문자를 제거합니다.
FILTER_FLAG_ENCODE_HIGH — ASCII 값이 127 초과인 문자를 인코딩합니다.
반환값(Return)
이 상수는 filter_var() 함수와 함께 사용되며, 특수 문자가 HTML 엔티티로 변환된 새로운 문자열을 반환합니다. 원본 변수의 값은 그대로 유지됩니다.
예제(Example)
<?php $var = "Favorite Sports is Football & Cricket?"; var_dump(filter_var($var, FILTER_SANITIZE_SPECIAL_CHARS)); ?>
실행 결과(Output)
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
string(43) "Favorite Sports is Football & Cricket?"
원본 문자열의 앰퍼샌드(&)가 HTML 엔티티인 &(5글자)로 변환되었기 때문에 결과 문자열의 길이가 43자가 된 것을 확인할 수 있습니다. 이처럼 FILTER_SANITIZE_SPECIAL_CHARS는 특수 문자를 자동으로 인코딩하여 브라우저에서 안전하게 표시되도록 도와줍니다.