PHP-код для проверки электронной почты говорит, что домены .info недействительны - PullRequest
0 голосов
/ 21 июля 2010

У меня есть следующий код PHP, который проверяет, является ли электронная почта действительной:

if (eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@([0-9a-z][0-9a-z-]*[0-9a-z]\.)+[a-z]{2}[mtgvu]?$", $email))
    return true;

Прекрасно работает, но сегодня я узнал, что если я пытаюсь проверить электронную почту .info, она говорит, что она недействительна.Любые идеи, что мне нужно добавить / изменить, чтобы он возвращал .info электронные письма как действительные?

Спасибо

Бен

Ответы [ 4 ]

2 голосов
/ 21 июля 2010

Использование:

if(filter_var($email, FILTER_VALIDATE_EMAIL)) echo 'yeey, valid';

Если интересует фактическое регулярное выражение, которое оно использует: оно находится в общедоступном источнике php (http://gcov.php.net/PHP_5_3/lcov_html/filter/logical_filters.c.gcov.php, строка 525)

1 голос
/ 21 июля 2010

[a-z]{2}[mtgvu]? в конце означает, что домен верхнего уровня может быть длиной всего два или три символа.Если вы хотите, чтобы быстрый взлом заставил его принять info, вы можете изменить [mtgvu]? на ([mtgvu]|fo)?:

if (eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@([0-9a-z][0-9a-z-]*[0-9a-z]\.)+[a-z]{2}([mtgvu]|fo)?$", $email))
    return true;
0 голосов
/ 21 июля 2010

Пожалуйста, рассмотрите возможность использования более RFC-совместимого парсера электронной почты, например этого от Доминика Сэйерса или этого от Кэла Хендерсона из Flickr.

0 голосов
/ 21 июля 2010

Чтобы также разрешить .info:

if (eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@([0-9a-z][0-9a-z-]*[0-9a-z]\.)+[a-z]{2}[mtgvu]?(fo)?$", $email))

(добавлен необязательный 'fo' в конец)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...