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

PHP에서 이메일 주소 유효성을 검사하는 방법 총정리

웹 개발에서 사용자가 입력한 이메일 주소가 올바른 형식인지 확인하는 것은 매우 중요한 작업입니다. 잘못된 이메일 주소가 데이터베이스에 저장되면 회원가입, 뉴스레터 발송 등 다양한 기능에 문제가 생길 수 있습니다.

이 글에서는 PHP의 정규 표현식(Regular Expression)과 내장 함수를 활용해 이메일 주소를 검증하는 대표적인 두 가지 방법을 소개합니다.

방법 1: preg_match() 함수와 정규 표현식 활용

preg_match() 함수는 정규 표현식 패턴을 기준으로 문자열을 검사하여, 패턴과 일치하면 1을, 일치하지 않으면 0을 반환합니다. 이를 활용하면 원하는 형식의 이메일 주소인지 정밀하게 확인할 수 있습니다.

예제 코드

<?php
    function checkemail($str) {
        return (!preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix", $str)) ? FALSE : TRUE;
    }
    if(!checkemail("alex@tutorialspoint.com")){
        echo "Invalid email address.";
    }
    else{
        echo "Valid email address.";
    }
?>

실행 결과

Valid email address.

위 예제에서는 preg_match() 함수로 문자열이 이메일 패턴과 일치하는지 검사하고, PHP 삼항 연산자(ternary operator)를 사용해 검사 결과에 따라 TRUE 또는 FALSE 값을 반환하도록 구성했습니다. 정규 표현식 끝에 붙은 i 플래그는 대소문자를 구분하지 않도록 하며, x 플래그는 패턴 내 공백을 무시해 가독성을 높여줍니다.

방법 2: filter_var() 함수 활용

두 번째 방법은 PHP에서 기본 제공하는 filter_var() 함수를 사용하는 것입니다. FILTER_VALIDATE_EMAIL 상수를 함께 전달하면 해당 문자열이 RFC 규격에 맞는 이메일 형식인지 자동으로 검사해 줍니다. 별도의 정규 표현식을 작성할 필요가 없어 코드가 간결하고 유지보수가 쉬운 장점이 있습니다.

예제 코드

<?php
    $email = "pattrick@tutorialspoint.com";
    // 이메일 유효성 검사
    if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
        echo("$email is a valid email address");
    }
    else{
        echo("$email is not a valid email address");
    }
?>

실행 결과

pattrick@tutorialspoint.com is a valid email address

두 방법의 비교 및 추천

정규 표현식을 직접 작성하는 방법은 검증 규칙을 세부적으로 조정할 수 있다는 장점이 있지만, 이메일 표준(RFC 5322)을 완벽히 반영하기 어렵고 코드가 복잡해질 수 있습니다. 반면 filter_var() 방식은 PHP 내부에서 검증 로직을 관리해 주기 때문에 대부분의 경우 더 안전하고 권장되는 방법입니다. 특별한 커스텀 규칙이 필요하지 않다면 filter_var() 사용을 추천합니다.