사용자 입력 데이터를 받을 때마다 직접 정규표현식을 작성하고 있지는 않을까. 많은 개발자들이 각 데이터 타입마다 일일이 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@example.com
FILTER_SANITIZE_URLURL 정제https://example.comhttps://exam ple.com
FILTER_SANITIZE_NUMBER_INT정수 추출42 ("abc42def" → 42)안전 반환 (숫자 없음)
FILTER_SANITIZE_NUMBER_FLOAT실수 추출3.14 ("3.14abc" → 3.14)안전 반환 (숫자 없음)
FILTER_SANITIZE_STRINGHTML 태그 제거hello ("<script>hello" → hello)안전 반환
FILTER_SANITIZE_FULL_SPECIAL_CHARS특수문자 이스케이프&lt; ("
이 포스트가 도움이 되었나요?
0
카테고리 연관글
웹 소켓 서버(Websocket) - PHP Ratchet 라이브러리 설치 및 실행
PHP를 통해 웹 소켓을 하기 위해선 소켓 서버가 있어야한다. 당연하게도 우리는 웹 소켓 프로그램을 만들기엔 오랜시간이 걸리고 어쩌면 영영 못만들 수 있다. 그래서 제공되는 라이브러리를 사용해야 하며 라이브러리는 Composer를 통해 쉽게 관리할 수 있다. 우선 들어가기 앞서 Composer 설치가 안되어 있을 경우 진행할 수 없으니 사전에 Compose···
PHP cURL 연결 타임아웃과 SSL 인증서 에러 - 외부 API 통신 안정성 완벽 가이드
외부 API를 연동할 때 PHP cURL을 많이 쓰는데, 개발 환경에선 잘 되다가 운영 환경에서만 갑자기 타임아웃이 나거나 SSL 인증서 오류가 뜨는 경험을 해봤을까? 다만 대부분의 개발자들은 이런 오류가 왜 발생하는지, 정확히 어떤 설정으로 해결해야 하는지 모르고 일단 오류를 무시하는 코드를 짜 버린다. 이번에는 cURL의 타임아웃 메커니즘, SSL 인증&middot;&middot;&middot;
사이트 운영시 웹 호스팅, 도메인, 보안서버(SSL) 기본 개념에 대해 알아보자
사이트 운영시 필요한 부가 서비스는 크게보면 3가지로 웹 호스팅, 도메인, 보안서버(SSL) 정도로 볼 수 있다. 이 3가지 서비스는 운영하는 목적에 따라 다를 수 도 있으나 일반 사이트 운영시에는 반드시 필요한 서비스이기때문에 사이트를 관리하는 입장에서는 알고 있어야 할 중요 정보들이다. 오늘은 이러한 서비스에 대해 간단한 개념정도에 대해 알아 보도록 하···
PHP json_encode() 한글 깨짐 현상 - UTF-8 인코딩 완벽 해결
PHP에서 데이터베이스나 배열의 한글 데이터를 JSON으로 변환할 때 이상한 문자열로 깨져나오는 현상을 경험해봤을까? 대부분의 개발자들은 json_encode()를 쓸 때 기본값만 사용하다가 한글이 유니코드 이스케이프 시퀀스(uXXXX 형태)로 나타나는 문제를 마주친다. 다만 이게 단순히 &#039;표시 문제&#039;인지 &#039;실제 데이터 손상&#039;인지, 어디서부터 인코딩을 맞춰&middot;&middot;&middot;
PHP 파일 시스템 함수 is_file()과 file_exists() 차이 - 파일 존재 여부 확인 완벽 가이드
파일 업로드 처리나 서버 리소스 관리 시 특정 파일이 실제로 존재하는지 먼저 확인해야 한다. 대부분의 개발자는 file_exists()나 is_file()을 아무 생각 없이 쓰거나, 둘의 차이를 정확히 모르고 상황에 맞지 않는 함수를 선택해서 버그를 만든다. 심하면 디렉토리인데 is_file()로 체크해서 false가 나오는 게 당연한데 마치 파일이 없다고&middot;&middot;&middot;
Comment
등록된 댓글이 없습니다.
REDINFO Since 2014
webmaster@redinfo.co.kr
Copyright © Redinfo All Rights Reserved