Просмотр поста

.
ДоХтор

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));
}