데이터 필터링

데이터 필터링 (Data Filtering)

사용자가 보낸 입력 같은 신뢰할 수 없는 데이터를 처리할 때, 그 데이터를 검증(validate)하거나 정화(sanitize)해야 해요. Filter 확장은 바로 그런 필터들을 제공합니다.

출처: PHP 공식 매뉴얼 - Data Filtering

본문

이 확장은 데이터를 검증하거나 정화하는 필터를 제공해요. 데이터 소스에 알 수 없는(또는 외부의) 데이터가 포함될 때 특히 유용하며, 예를 들어 HTML 폼에서 온 데이터가 그런 경우가 많습니다.

필터링에는 크게 두 가지 유형이 있어요: 검증(validation)정화(sanitization).

검증 (Validation)

검증 필터는 데이터가 특정 기준을 충족하는지 확인하는 데 사용돼요. 이러한 필터는 FILTER_VALIDATE_* 상수로 식별됩니다. 예를 들어 FILTER_VALIDATE_EMAIL 필터는 데이터가 유효한 이메일 주소인지 판별할 수 있어요. 단, 검증은 입력 데이터를 절대 변경하지 않습니다.

정화 (Sanitization)

반면 정화는 데이터를 "깨끗이 정리"하는 것이므로, 문자를 추가하거나 제거하면서 입력 데이터를 변경할 수 있어요. 이러한 필터는 FILTER_SANITIZE_* 상수로 식별됩니다. 예를 들어 FILTER_SANITIZE_EMAIL 필터는 이메일 주소에 부적절한 문자를 제거해요. 하지만 정화된 데이터가 유효한 이메일인지는 검증하지 않습니다.

플래그 (Flags)

대부분의 필터는 필터 동작을 미세 조정하는 선택적 플래그를 지원하며, 이 플래그들은 FILTER_FLAG_* 상수로 식별됩니다.

예를 들어 FILTER_VALIDATE_URL 검증 필터에 FILTER_FLAG_PATH_REQUIRED를 함께 쓰면, URL에 경로(path)가 필요합니다. 즉 https://example.org/foo에서의 /foo처럼 경로가 있어야 해요.

구성 요소

  • 설치/설정: Installation, Runtime Configuration, Predefined Constants
  • 예제: Validation(검증), Sanitization(정화)

필터 함수 일람

  • filter_has_var — 지정 타입의 변수가 존재하는지 확인
  • filter_id — 이름 있는 필터에 속한 필터 id 반환
  • filter_input — 이름으로 특정 외부 변수 가져오기(선택적으로 필터 적용)
  • filter_input_array — 외부 변수 가져오기(선택적으로 필터 적용)
  • filter_list — 지원되는 모든 필터 목록 반환
  • filter_var — 지정 필터로 변수 필터링
  • filter_var_array — 여러 변수 가져오기(선택적으로 필터 적용)

예외 클래스

  • Filter\FilterException — 필터 예외
  • Filter\FilterFailedException — 필터 실패 예외

더 알아보기