проверка нелатинского адреса электронной почты - PullRequest
11 голосов
/ 24 мая 2010

Теперь, когда ICann разрешает использование нелатинских доменных имен, следует ли мне беспокоиться о проверке электронной почты? В настоящее время мои сайты используют функции php, чтобы обеспечить буквенно-цифровой набор символов в каждом сегменте адреса электронной почты. Пройдут ли эти другие наборы символов, такие как кириллица, арабский и китайский языки? Есть ли рекомендуемые функции php для этого?

Ответы [ 2 ]

1 голос
/ 25 мая 2010

Я думаю, что в конечном итоге лучшим способом было бы использование правильной функции IDN для преобразования входящей строки в строку ACE (xn--xyz-blah.com). Если этот процесс работает, доменное имя является действительным. Если это не так, это не так.

Существует функция PHP с именем idn_to_ascii(), которая делает это, но для этого нужны дополнительные библиотеки. Вам нужно посмотреть, доступен ли он в вашей системе.

Также существует внешняя команда Linux с именем idn, которая выполняет преобразования IDN. Впрочем, я ничего об этом не знаю.

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

0 голосов
/ 25 мая 2010

Я собирался рекомендовать использовать filter_var() с фильтром FILTER_VALIDATE_EMAIL.Но после поиска в Google выясняется, что пока не поддерживает многобайтовые символы .Похоже, на данный момент ваша лучшая ставка - удалить нелатинские символы и выполнить обычные проверки на это (хотя checkdnsrr , очевидно, не удастся, так как вы изменили доменудалив нелатинские символы и заменив их латинскими эквивалентами, чтобы, если вы используете это для проверки записей MX домена электронной почты, вам потребуется временно отключить это).

...