사용자 입력 데이터를 받을 때마다 직접 정규표현식을 작성하고 있지는 않을까. 많은 개발자들이 각 데이터 타입마다 일일이 preg_match()를 짜거나, 검증 로직을 중복해서 만든다. 다만 PHP에는 이미 내장된 filter_var() 함수가 있어서 이메일, URL, IP, 정수, 실수 등 대부분의 타입을 한 줄로 검증할 수 있다는 사실을 모르는 경우가 많다. 이번에는 filter_var()의 정확한 사용법과 각 필터의 동작 원리, 실무에서 자주 마주치는 검증 사례를 완벽하게 정리해서 소개하겠다.

 

1단계. filter_var() 기초 이해하기

filter_var()는 주어진 변수를 지정한 필터로 검증하거나 변환하는 내장 함수다. 반환값은 필터를 통과했으면 변환된 데이터, 실패했으면 false를 돌려준다.

// 기본 문법
filter_var($variable, $filter, $options);

// 예시: 이메일 검증
$email = "user@example.com";
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
    echo "유효한 이메일";
} else {
    echo "유효하지 않은 이메일";
}

filter_var()의 강점은 정규표현식 없이 선언적으로 쓸 수 있다는 것. 코드를 읽기만 해도 어떤 검증인지 바로 알 수 있다.

 

2단계. 자주 쓰는 필터 14가지 정리

filter_var()에서 제공하는 필터는 50개 이상이지만, 실무에서 대부분 다음 14가지만 쓴다.

필터용도통과 예시실패 예시
FILTER_VALIDATE_EMAIL이메일 주소test@example.comtest@.com
FILTER_VALIDATE_URLURL 주소https://example.comhtp://example.com
FILTER_VALIDATE_IPIP 주소 (IPv4/IPv6)192.168.1.1256.1.1.1
FILTER_VALIDATE_INT정수42, -53.14, abc
FILTER_VALIDATE_FLOAT실수3.14, -2.5abc
FILTER_VALIDATE_BOOLEAN불린값true, "1", "yes""maybe"
FILTER_VALIDATE_DOMAIN도메인명example.comexample.c
FILTER_VALIDATE_MACMAC 주소AA:BB:CC:DD:EE:FFAA:BB:CC:DD:EE
FILTER_SANITIZE_EMAIL이메일 정제user@example.comuser@hello world"; // HTML 태그 제거 $clean_string = filter_var($user_input, FILTER_SANITIZE_STRING); echo $clean_string; // "hello world" // URL에서 안전하지 않은 문자 제거 $dirty_url = "https://exam ple.com/path?q=
REDINFO Since 2014
webmaster@redinfo.co.kr
Copyright © Redinfo All Rights Reserved