Regular expression php for email

Проверка правильности email на PHP

Проверка правильного формата вводимых данных очень важна в любых информационных системах. В данной статье, мы рассмотрим возможности 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-адреса.

Читайте также:  Java get file info

Валидация email с использованием регулярного выражения PHP

Если же либо версия PHP не позволяет вам применить описанный выше метод, либо хотите просто действовать по старинке, то можно использовать регулярные выражения:

$email = "MyEmail@mysite.ru";
if (preg_match("/^(?:[a-z0-9]+(?:[-_.]?[a-z0-9]+)?@[a-z0-9_.-]+(?:\.?[a-z0-9]+)?\.[a-z])$/i", $email)) echo "Адрес указан корректно.";
>else echo "Адрес указан не правильно.";
>

Если используете подобное регулярное выражение, стоит быть внимательным к возможным адресам. Например, в данный код решит, что введенное значение не email, если доменная зона будет более 5 символов или если адрес будет задан кириллицей. Поэтому, применяя его, учитывайте возможные вводимые значения.

Источник

Email regex PHP

The regular expressions below can be used to validate if a string is an email address and to extract email addresses from a string. This validation method however does not guarantee that the emails validated and extracted actually exist.

The basic validation

A simple PHP regex to validate string against email format and catch the most obvious syntax errors:

Enter a text in the input above to see the result

[email protected]'); // returns 1 // Extract email addresses from a string $extract_email_pattern = '/\\S+@\\S+\\.\\S+/'; $string_to_match = 'You can reach me out at [email protected] and [email protected]'; preg_match_all($extract_email_pattern, $string_to_match, $matches); // matches[0] is ['[email protected]', '[email protected]'] 

The more complex email regex

This PHP regular expression will match 99% of valid email addresses and will not pass validation for email addresses that have, for instance:

But at the same time it will allow part after @ to be IP address.

Enter a text in the input above to see the result

 

RFC 5322 compliant regex

This PHP regular expression is compliant to RFC 5322 standard which allows for the most complete validation. Usually, you should not use it because it is an overkill. In most cases apps are not able to handle all emails that this regex allows.

Enter a text in the input above to see the result

Extra information about validating email

As was stated previously, PHP regex email validation can not fully guarantee that email exists and the message can be delivered. The best way how to know for sure that email is valid is to actually send an email to that address because even paid email validation services do not provide a 100% guarantee for that.

It’s better to use filter_var in most cases:

Create an internal tool with UI Bakery

Discover UI Bakery – an intuitive visual internal tools builder.

PHP регулярное выражение email и доверие пользователей

От автора: доверяй, но пользователей своих проверяй! Особенно правильность ввода ими адресов почтовых ящиков. А то ни рассылки, ни маркетинга и клиентов вам не видать. Да и обидно, понимаешь, когда тебя «обманывают» и вводят какую-то «абракадабру»! Поэтому сегодня научимся, как создавать PHP регулярное выражение email.

Основы

Любой адрес электронного почтового ящика состоит из двух частей: левая (до «собаки») и правая (после «собаки»). Будет развивать наш успех постепенно, и реализуем проверку ввода эти составляющих «мыла».

PHP регулярное выражение email и доверие пользователей

Онлайн курс «PHP-разработчик»

Изучите курс и создайте полноценный проект — облачное хранилище файлов

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

Продолжим расширять наше PHP регулярное выражение для проверки email. В «дособачную» часть добавим еще несколько правил:

Email может начинаться с цифры, с маленькой или большой буквы.

В середине «дособачины» может использоваться нижнее подчеркивание, дефис (экранированный слешем), а затем любой символ.

PHP регулярное выражение email и доверие пользователей

«Допилим» часть шаблона после собаки:

PHP регулярное выражение email и доверие пользователей

Во второй части выражения PHP проверка email построена по тем же канонам. Единственное, на что стоит обратить внимание, это экранированная точка и знак доллара. Он означает окончание строки.

Скептицизм

Но лучше с регулярками сильно «не напрягаться». Особенно при валидации формата адреса «мыла». Пользователь может придумать такой адрес, который ему вздумается. Поэтому «обуздать» его, предусмотреть все «а если» практически невозможно.

Для примера покажу вам, какой может быть регулярка для PHP проверки email на валидность:

PHP регулярное выражение email и доверие пользователей

Сами понимаете, что такое «страхолюдие» боязно даже в скрипт вставлять :). Работает или не работает, не знаю. Да и проверять не хочу.

Многие эксперты придерживаются в этом вопросе минимализма. Они считают, что главным атрибутом, который должен присутствовать в email, это «собака». Все остальное неважно! И я сними согласен.

Предположим, что к вам зашел пользователь, адрес «мыла» которого «не пролазит» в установленные регуляркой рамки. Ну, и что дальше? Скорее всего, человек просто плюнет и уйдет. И сколько таких «наплевавших» ушло с вашего сайта, вы не будете знать.

Представляю вам самый идеальный шаблон для проверки email:

Источник

PHP Forms — Validate E-mail and URL

This chapter shows how to validate names, e-mails, and URLs.

PHP — Validate Name

The code below shows a simple way to check if the name field only contains letters, dashes, apostrophes and whitespaces. If the value of the name field is not valid, then store an error message:

$name = test_input($_POST[«name»]);
if (!preg_match(«/^[a-zA-Z-‘ ]*$/»,$name)) $nameErr = «Only letters and white space allowed»;
>

The preg_match() function searches a string for pattern, returning true if the pattern exists, and false otherwise.

PHP — Validate E-mail

The easiest and safest way to check whether an email address is well-formed is to use PHP’s filter_var() function.

In the code below, if the e-mail address is not well-formed, then store an error message:

$email = test_input($_POST[«email»]);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) $emailErr = «Invalid email format»;
>

PHP — Validate URL

The code below shows a way to check if a URL address syntax is valid (this regular expression also allows dashes in the URL). If the URL address syntax is not valid, then store an error message:

PHP — Validate Name, E-mail, and URL

Now, the script looks like this:

Example

// define variables and set to empty values
$nameErr = $emailErr = $genderErr = $websiteErr = «»;
$name = $email = $gender = $comment = $website = «»;

if ($_SERVER[«REQUEST_METHOD»] == «POST») if (empty($_POST[«name»])) $nameErr = «Name is required»;
> else $name = test_input($_POST[«name»]);
// check if name only contains letters and whitespace
if (!preg_match(«/^[a-zA-Z-‘ ]*$/»,$name)) $nameErr = «Only letters and white space allowed»;
>
>

if (empty($_POST[«email»])) $emailErr = «Email is required»;
> else $email = test_input($_POST[«email»]);
// check if e-mail address is well-formed
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) $emailErr = «Invalid email format»;
>
>

if (empty($_POST[«website»])) $website = «»;
> else $website = test_input($_POST[«website»]);
// check if URL address syntax is valid (this regular expression also allows dashes in the URL)
if (!preg_match(«/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|. ;]*[-a-z0-9+&@#\/%=~_|]/i»,$website)) $websiteErr = «Invalid URL»;
>
>

if (empty($_POST[«comment»])) $comment = «»;
> else $comment = test_input($_POST[«comment»]);
>

if (empty($_POST[«gender»])) $genderErr = «Gender is required»;
> else $gender = test_input($_POST[«gender»]);
>
>
?>

The next step is to show how to prevent the form from emptying all the input fields when the user submits the form.

Источник

Оцените статью