Теперь, когда ICANN разрешает имена доменов, не являющихся латинскими, следует ли я беспокоиться о проверке электронной почты? В настоящее время на моих сайтах используются функции php для обеспечения набора буквенно-цифровых символов в каждом сегменте адреса электронной почты. Будут ли эти другие наборы символов, такие как кириллица, арабский и китайский, пройти проверку? Рекомендуются ли для этого функции php?
Я думаю, что в конечном итоге лучший способ – использовать правильную функцию IDN для преобразования входящей строки в строку ACE ( xn--xyz-blah.com
). Если этот процесс работает, доменное имя действительно. Если это не так, это не так.
Существует функция PHP с именем idn_to_ascii()
которая делает это, но ей нужны дополнительные библиотеки. Вам нужно будет увидеть, доступно ли это в вашей системе.
Также представляется внешняя команда Linux с именем idn
которая делает конверсии IDN. Однако я ничего не знаю об этом.
Если вы хотите использовать встроенные методы PHP, delfuego предоставляет регулярное выражение в этом вопросе, который выглядит очень хорошо.
Я хотел бы рекомендовать использовать filter_var()
с фильтром FILTER_VALIDATE_EMAIL
. Но после поиска в Google выясняется, что он еще не поддерживает многобайтовые символы . Похоже, на данный момент лучше всего вычеркнуть нелатинские символы и выполнить обычные проверки против этого (хотя checkdnsrr , очевидно, не сработает , так как вы изменили домен, удалив нелатинские символы и заменив их своими Латинские эквиваленты, поэтому, если вы используете это для проверки записей MX домена электронной почты, вам необходимо временно отключить это).