Все ленты — последние статьи

Проверка правильности написания email адреса.

Главная » Уроки PHP » Проверка правильности написания email адреса.
PHP урок № 210
Паттерн (англ. pattern) — английское слово, значение которого передается по-русски словами «шаблон», «система», «структура», «принцип», «модель», также это слово имеет значение «узор». Из-за применения его в различных западных дисциплинах и технологиях в русскоязычную среду оно проникло как специфический термин сразу в нескольких сферах деятельности. По набору смыслов и интерпретаций в различных контекстах это слово до некоторой степени коррелирует с некоторыми смыслами греческого слова характер (в переводе с греческого характер — это печать, чеканка, отличительная черта).

Будем считать, что стандартный адрес электронной почты выглядит так: Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.

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.";
}
}

?>
Более полную информацию по работе с регулярными выражениями, можно получить из этой книги, на сегодняшний день самое лучшее издание описывающие всю мощь регулярных выражений.