PHP преобразовать рф домен в punycode
Я немного плаваю в этих терминах, но все же попробуем разобраться.
Для начала попробуем разобраться в терминах
IDN - это доменные имена, которые содержат символы национальных алфавитов
Punycode — стандартизированный метод преобразования последовательностей Unicode-символов в так называемые ACE-последовательности, которые состоят только из алфавитно-цифровых символов, как это разрешено в доменных именах. Punycode был разработан для однозначного преобразования доменных имен в последовательность ASCII-символов.
Что имеем:
РФ домен
Что нужно:
Преобразовать в punycode
Как будем делать:
На PHP
К счастью ничего супер сложного писать не придется, все что нам нужно сделать, это скачать уже готовый класс IDNA Convert с phpClasses.org
Далее, в нужном месте мы конвертируем домен в punycode:
1 2 3 4 5 |
require_once('idna_convert.class.php'); //файл скачанный с phpclasses.org $IDN = new idna_convert(); $domain = 'домен.рф'; $input = $IDN->encode($domain); echo $input; |
На выходе мы получим punycode этого домена xn—d1acufc.xn—p1ai
Один очень важный момент, который никак нельзя упустить это кодировка. Домен, который мы кодируем в punycode обязательно должен быть в UTF-8, хотя в 2011 использовать не UTF-8 было бы мягко говоря неумно.
Если мы работаем с доменами, то можно даже без всякой проверки прогонять домены через этот енокд, потому что если домен не IDN, то он просто останется в том же самом виде, в котором и был, а если IDN, то он преобразуется в punycode.

Так как преобразовать имя например Вася.рф в читабельный для pynicode??? Я чото так и не понял.
Грамотный класс, простой главное и то что нужно, а то скрипт мой чего то не хочет кирилические домены обрабатывать, ерунда говорит этот ваш РФ