Проверка правильного формата вводимых данных очень важна в любых информационных системах. В данной статье, мы рассмотрим возможности PHP проверить, корректно ли указан адрес электронной почты (email). Обращу внимание, что речь идет лишь о проверке корректной структуры адреса. Дело в том, что адрес, может либо быть корректным (т.е. валидным), но при этом не существовать. Например, пользователь может просто ошибиться символом при вводе. Поэтому задача данной статьи – отсеять заведомо некорректные значения для email.
Как известно email состоит из двух основных частей. Например, адрес: MyEmail@myssite.ru.
Здесь, MyEmail – это непосредственный адрес (или логин) пользователя, а myssite.ru – адрес сайта, которому соответствует электронная почта.
Следовательно, проверка адреса на валидность заключается в том, что он должен соответствовать структуре:
логин_пользователя@доменное_имя.доменная_зона
В итоге, задача сводилась к построению регулярного выражения для проверки, соответствует ли проверяемая стока допустимым символам и структуре email. Но, начиная с PHP 5.2, появилась возможность выполнить эту проверку встроенной функцией filter_var(). Пример такой проверки:
$email = "MyEmail@mysite.ru";
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "Адрес указан корректно.";
}else{
echo "Адрес указан не правильно.";
}
В первый параметр функции указывается строковое значение, которое нужно проверить. Второй параметр – это идентификатор применяемого фильтра (в данном случае для проверки email). Функция filter_var() универсальна и может быть использована для проверки различных значений – числовое значение, логическое или проверка валидности IP-адреса.
Если же либо версия PHP не позволяет вам применить описанный выше метод, либо хотите просто действовать по старинке, то можно использовать регулярные выражения:
$email = "MyEmail@mysite.ru";
if (preg_match("/^(?:[a-z0-9]+(?:[-_.]?[a-z0-9]+)?@[a-z0-9_.-]+(?:\.?[a-z0-9]+)?\.[a-z]{2,5})$/i", $email)) {
echo "Адрес указан корректно.";
}else{
echo "Адрес указан не правильно.";
}
Если используете подобное регулярное выражение, стоит быть внимательным к возможным адресам. Например, в данный код решит, что введенное значение не email, если доменная зона будет более 5 символов или если адрес будет задан кириллицей. Поэтому, применяя его, учитывайте возможные вводимые значения.
Функция feof в PHP, описание и примеры
Функция rmdir в PHP, описание и примеры
Функция rename в PHP, описание и примеры
Иван
- 12 апреля 2024, 09:43 ↓Я
- 19 августа 2022, 16:21 ↓'~^[a-z0-9-_\.]+@[a-z0-9-\.]+\.\S{2,8}$~'
Олег Петрович
- 07 апреля 2022, 18:29 ↓Антон Сенников
- 28 мая 2021, 11:59 ↓Cntgfy
- 27 мая 2021, 08:58 ↓