Проверка правильности написания email адреса
Будем считать, что стандартный адрес электронной почты выглядит так: admin@mail.ru
Адрес состоит из двух частей это:
admin - имя пользователя.
mail.ru - домен, доменное имя.
Их разделяет знак @(собака).
Имя пользователя - может состоять из букв разного регистра, цифр, знаков подчёркивания, точек, минусов.
Доменное имя - так же может состоять из букв разного регистра, цифр, знаков подчёркивания, точек, минусов.
В результате паттерн (шаблон), с которым функция будет сравнивать email адрес, может выглядеть так:
1. "[-0-9a-z_.]+@[-0-9a-z_^.]+" - это часть паттерна (шаблона), проверяющая имя пользователя, собаку и домен второго уровня до точки
2. ".[a-z]{2,6}" - эта часть проверяет домен первого уровня (ru,com,ua и т.д.).
Объединим всё и получим такой шаблон:
"|[-0-9a-z_.]+@[-0-9a-z_^.]+.[a-z]{2,6}|i"
В конце шаблона присутствует модификатор i он сообщает интерпретатору, что поиск проводится без учёта регистра, т.е. могут присутствовать и заглавные буквы и прописные.
Для того чтобы шаблон проверял чётко лишь email адрес, к нему следует добавить знак начала строки ^ и конец строки $.
"|^[-0-9a-z_.]+@[-0-9a-z_^.]+.[a-z]{2,6}$|i"
Листинг № 1 - Проверка корректности ввода email-адреса
<form name="form1" method="post" action="">
<label>Введите email-адрес<br>
<input type="text" name="email" id="textfield">
</label>
<label>
<input type="submit" name="button_22" id="button" value="Проверить">
</label>
</form>
<?php
if($_POST['button_22'] == "Проверить")
{
if(!empty($_POST['email']))
{
if(preg_match("|^[-0-9a-z_.]+@[-0-9a-z_^.]+.[a-z]{2,6}$|i", $_POST['email']))
{
echo $_POST['email']. " - Правильный.";
}
else
{
echo $_POST['email']. " - НЕ правильный.";
}
}
else
{
echo "Вы не ввели email.";
}
}
?>