Валидация email адреса на PHP

By Денис Чащин  

Наверняка многим из вас приходилось сталкиваться с вопросом валидации email адреса при программировании на PHP. На подавляющем большинстве сайтов, которые выдает поисковик, рекомендуется сделать валидацию с помощью регулярных выражений, например как

/^[A-Za-z0-9!#$%&'*+-\/=?^_`{|}~][A-Za-z0-9!#$%&'*+-\/=?^_`{|}~\.]{0,63}$/

Описывается много вариаций, расматривается много функций, сопоставляются их отличия и все в том же духе.
Но как говорится, зачем сложно, если можно просто.

Вариант 1 Используя стандартную функцию PHP

<?php $email = "[email protected] mple.com"; if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { echo "E-mail is not valid"; } else { echo "E-mail is valid"; } ?>

Функция filter_var($email, FILTER_VALIDATE_EMAIL), возвращает либо true в случае если адрес валиден, либо false, если адрес не валиден. Правда просто? :)

Вариант 2 Проверка существования домена

В этом варианте будем проверять, существует ли домен, на котором должен быть проверяемый email адрес.

function verifyEmailAddress($email) { list($user, $domain) = explode("@", $email); $result = checkdnsrr($domain, 'MX'); return($result); }

Эта функция делит email на две части по знаку @ и проверяет существования домена. Осталось всего лишь проверить валидность введенного имени пользователя. Проверку можно сделать опять таки либо с помощью регулярного выражения(гораздо более простого), либо проверить весь адрес с помощью функции из варианта 1.

Пробуйте ;)