Проверка электронной почты (PHP)
Функция is_email()
На сайтах часто приходится проверять — корректно ли введена электронная почта.
Самый популярный вариант — проверять при помощи регулярных выражений.
<?php
/**
* Функция is_email проверяет корректно ли введена электронная почта $email
*
*/
function is_email($email)
{
// список доменов верхнего уровня, в которых больше двух символов
$d = 'biz|com|edu|gov|info|int|mil|name|net|org|aero|asia|cat|coop|jobs|mobi|museum|pro|tel|travel|arpa|eco|xxx';
return preg_match(
'/^[a-z0-9][a-z0-9\-._]*[a-z0-9]@[a-z0-9][a-z0-9\-.]*[a-z0-9]\.('.$d.'|[a-z]{2})$/i',
$email
);
}
// заполним массив различными вариантами ввода электронной почты
$emails = array(
'test@example.com',
'test@example.ru',
'test@example.org.ru',
'.test@example.com',
'test.name@example.com',
'test.my-name@subdomain.example.com',
'test.text@example.comm'
);
// прогоним массив и проверим каждый элемент на корректность
foreach ($emails as $email)
{
echo $email.': '.(is_email($email) ? 'true' : '<b>false</b>').'<br>';
}
?>
Результат
На экране мы увидим следующее:
test@example.com: true<br>
test@example.ru: true<br>
test@example.org.ru: true<br>
.test@example.com: <b>false</b><br>
test.name@example.com: true<br>
test.my-name@subdomain.example.com: true<br>
test.text@example.comm: <b>false</b>
...или так
test@example.com: true
test@example.ru: true
test@example.org.ru: true
.test@example.com: false
test.name@example.com: true
test.my-name@subdomain.example.com: true
test.text@example.comm: false
Заключение
Функция is_email(string $email) отлично справляется с поставленной задачей.
Комментарии:
Нету комментариев для вывода...