Добавлено: 25.10.2017 / 10:46
В общем нужно чтобы вводить можно было буквы @ и точку, если можно как-то сделать чтобы обязательно была собачка @
// Проверка mail
if (empty($reg_mail))
$error = $error . 'Не введён E-mail!';
elseif (mb_strlen($reg_mail) < 3 || mb_strlen($reg_mail) > 30)
$error = $error . 'Недопустимая длина E-mail';
if (preg_match("/[^a-z\._-]+@[a-z\._-]+\.[a-z]\$/", $reg_mail))
$error = $error . 'Некорректный формат e-mail адреса!';
Добавлено: 25.10.2017 / 11:13
Я извиняюсь, дайте такой код с вводом цыфр, букв @ и точку, и обязательно чтоб была введена @
Iron_Man, зачем? Достаточно проверять на наличие собаки @. А остальное всё - это уже проблемы отправителя.
Koenig, где-то попадалась мне статья о не корректном фильтровании с помощью этой ф-ции.
Iron_Man, потестируй этот пример, вроде бы всё учтено:
code (+/-)
// Массив с ошибками
$errors = [];
// Проверка mail
if (empty($reg_mail)) {
$errors[] = 'Не введён E-mail!';
} elseif (mb_strlen($reg_mail) < 3 || mb_strlen($reg_mail) > 30) {
$errors[] = 'Недопустимая длина E-mail';
}
// Email соответствует, если:
$patt = '~^
[a-z] # начинается с одной из букв латинского алфавита ,
[a-z\d]* # за которой идёт НЕ обязательная последовательность из букв или чисел ,
([._-])? # за которой идёт НЕ обязательный символ . или _ или - ,
(?(1)[a-z\d]+ # если найдена . или _ или -, то за ними обязательна буква или цифра ,
| # иначе (если НЕ найдена . или _ или -) ,
[a-z\d]+)@ # за которой идёт обязательная последовательность из букв и чисел, и @ ,
[a-z]+ # за которой идёт обязательная последовательность из 1-ой и более букв ,
\. # за которыми идёт символ . ,
[a-z]{2,4}$ # за которой идут от 2-х до 4-х букв, и конец строки
~x';
if (!preg_match($patt, $reg_mail)) {
$errors[] = 'Некорректный формат e-mail адреса!';
}
if ($errors) {
die('Ошибка!<br />'. join('<br />', $errors));
}
Iron_Man,
http://johncms.com/forum/index ... 02486 там есть проверка валидности емайла
# Jesk (28.10.2017 / 13:55)
Iron_Man, http://johncms.com/forum/index ... 19252 там есть проверка валидности емайла
Там кривая проверка валидности:
'/[0-9a-z_\-]+@[0-9a-z_\-^\.]+\.[a-z]{2,6}/i'
Она будет пропускать не корректные майлы вида: asdasd@
-asd.ru
Вон что откопал
----------------
function isMail($email)
{
return preg_match('#^([a-z0-9_\-\.])+\@([a-z0-9_\-\.])+(\.([a-z0-9])+)+$#', $email);
}
# Andrei4ik93 (06.11.2017 / 14:38)
Вон что откопал
----------------
function isMail($email)
{
return preg_match('#^([a-z0-9_\-\.])+\@([a-z0-9_\-\.])+(\.([a-z0-9])+)+$#', $email);
}
Ну дык эта регулярка тоже не катит :
-ertertert@ert.ert
Я же выше написал более менее корректное решение.
# ДоХтор (06.11.2017 / 14:42)
-ertertert@ert.ert
Это кстати корректное мыло
По rfc стандарту в локальной части адреса, какого только барахла не может быть(по моему все символы) Мэйлерам правда не понравится. FILTER_VALIDATE_EMAIL работает как раз по стандарту