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

Форум для тех кто начинает осваивать язык php.
Аватара пользователя
Slash
Администратор
Сообщения: 2029
Поблагодарили: 62 раза

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

Сообщение Slash » Ср авг 31, 2016 8:20 am

При регистрации нового пользователя или при подписки на рассылку, пользователь вводит адрес своей электронной почты, который необходимо проверить на корректность, дабы избежать возможных ошибок при вводе адреса. Делать это лучше при помощи регулярного выражения. Давно, в интернете я нашел одно регулярное выражение (где именно, я не помню), которое мне понравилось и я им пользуюсь до сих пор, сама регулярка выглядит так:

Код: Выделить всё

^[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»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость