Возникли проблемы при проверке адреса электронной почты в PHP с помощью preg_match - PullRequest
0 голосов
/ 03 апреля 2011

Вот код:

if(trim($_POST['email']) == '')  {
        $hasError = true;
    } else if (!preg_match("/^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$", trim($_POST['email']))) {
        $hasError = true;
    } else {
        $email = trim($_POST['email']);
    }

Вот сообщение об ошибке:

Предупреждение: preg_match () [function.preg-match]: в /home/bigsilkd/public_html/UBA/join.php в строке 22 * ​​1006 * не найден конечный разделитель '/'

Ответы [ 2 ]

5 голосов
/ 03 апреля 2011

Вы не должны использовать регулярные выражения для проверки писем.Например, ваше регулярное выражение не разрешает мой адрес электронной почты +@example.org, который является нормальным и действительным адресом электронной почты.Сохранить мою электронную почту!Это вымирает из-за плохой проверки формы!Используйте filter_var!

if (filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
    // email is valid
}
5 голосов
/ 03 апреля 2011

Это именно то, что написано:

preg_match("/^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$"

должно быть

preg_match("/^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$/"
                                                      ^
                                                      |
                                  This was missing ---/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...