Теперь, когда ICann позволяет non-latin-character доменные имена, я должен быть обеспокоен почтовой проверкой? В настоящее время мои сайты используют функции 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 домена электронной почты, вам нужно будет временно отключить это).