Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP FILTER_SANITIZE_STRING 상수 완벽 정리 – 주요 플래그와 사용 예제

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!"만 남게 됩니다. 이처럼 플래그 조합을 통해 원하는 수준의 문자열 정제가 가능합니다.