Проверка корректности адреса электронной почты на PHP

При регистрации нового пользователя или при подписки на рассылку, пользователь вводит адрес своей электронной почты, который необходимо проверить на корректность, дабы избежать возможных ошибок при вводе адреса. Делать это лучше при помощи регулярного выражения. Давно, в интернете я нашел одно регулярное выражение (где именно, я не помню), которое мне понравилось и я им пользуюсь до сих пор, сама регулярка выглядит так:
^[a-zA-Z0-9_\.\-]+@([a-zA-Z0-9\-]+\.)+[a-zA-Z]{2,6}$

Тут проверяется весь адрес:
  • Первая часть (логин), до собаки, он может состоять из букв латинского алфавита, цифр, дефиса и нижнего подчеркивания.
  • Собака (@), собака должна присутствовать сразу после логина.
  • Адрес почтового сервиса, что следует после символа собаки. Он может состоять из букв латинского алфавита, цифр и дефиса. Обязательно должна быть точка, после точки следуют буквы латинского алфавита, в количестве от двух до шести.

Использовать это регулярное выражение надо функцией preg_match, данная функция выполняет проверку на соответствие регулярному выражению.

Пример, как можно проверить адрес электронной почты, при помощи регулярного выражения:
if (!preg_match('~^[a-zA-Z0-9_\.\-]+@([a-zA-Z0-9\-]+\.)+[a-zA-Z]{2,6}$~', $mail))
{
    exit('Неверная почта.');
}

Если в адресе почты будет ошибка, то пользователь получит сообщение об ошибки:
Неверная почта.

Если код проверки нужен в виде пользовательской функции, то можно переписать его так:
function correct_mail($mail)
{
    if (!preg_match('~^[a-zA-Z0-9_\.\-]+@([a-zA-Z0-9\-]+\.)+[a-zA-Z]{2,6}$~', $mail))
    {
        return 'Неверная почта.';
    }

    return 'Почта корректна.';
}

И проверять, например, так:
echo correct_mail('login@mail.ru');
Теги: PHP
Автор: