Артём Мáлков

Кодирование и декодирование кириллических (в зоне .РФ) доменов с помощью Punycode

1 авг0 комм

Домены в зоне .РФ появились сравнительно недавно и уже успели превысить отметку в несколько сотен тысяч регистраций.

Домены в этой зоне предпочтительно относятся к России и пишутся исключительно на кириллице (на русском языке).

Признаюсь честно – я не сторонник этих доменов и русских названий страниц сайта в целом по многим причинам, но Интернет есть Интернет и ничего тут не поделаешь.

Сегодня я познакомлю вас с PHP-классом «Punycode». С помощью этого класса происходит конвертация Unicode-символов в ACE-последовательности. Нам эти все умные понятия не так важны, как важен тот факт, что при разработке своего модуля, например, какого-нибудь парсера, при указании ссылки типа:

http://это-мой-сайт.рф

мы можем не получить никакого результата. А вот если мы преобразуем этот домен в вид ACE, который, кстати говоря, выглядит так:

http://xn-----8kc8acomc3adj5j.xn--p1ai

то вполне получим работоспособный скрипт. Вообще, то, где это может вам потребоваться, вы определяете сами, я лишь предоставляю сам класс и инструкцию по работе с ним.

Кодирование кириллических доменов с помощью Punycode

1. Первым делом скачиваем класс в конце статьи и загружаем к себе на хостинг.

2. Далее подключаем его к вашему скрипту (в самый верх) таким образом:

require_once("idna_convert.class.php");

3. Осуществляем кодирование на примере вышеуказанного домена:

$domain = "это-мой-сайт.рф";

$converter = new idna_convert();
$encoded_domain = $converter->encode($domain);

echo $encoded_domain; // Вернет xn-----8kc8acomc3adj5j.xn--p1ai

Все просто.

Декодирование кириллических доменов с помощью Punycode

Если вам покажут домен вида:

xn-----8kc8acomc3adj5j.xn--p1ai

не думаю, что вы сразу сможете понять, что это за адрес на кириллице (пока не перейдете на него, конечно). Чтобы расшифровать обратно этот домен в читаемый вид, делаем следующее.

Первые два шага вы повторяете в точности из описания кодирования, а вот уже третий пункт будет выглядеть следующим образом:

$domain = "xn-----8kc8acomc3adj5j.xn--p1ai";

$converter = new idna_convert();
$decode_domain = $converter->decode($domain);

echo $decode_domain; // Вернет это-мой-сайт.рф

Это все, что вам нужно знать о классе Punycode. Если остались вопросы или возникли трудности – пишите, постараюсь помочь.

Файл
Размер
Ссылка
punycode.zip
18,74 Kb
Скачать с сервера
Рекомендуем к просмотру
Вывод общего количества товаров из корзины и их итоговой суммы в Magento
Хаки
Бесплатная регистрация домена второго уровня
Статьи и советы
Как прикрепить свой домен на сайт в uKit?
Статьи и советы
0
комментариев
Форма комментирования этого поста скрыта. Авторизуйтесь, чтобы расширить привилегии гостевого посещения и получить необходимую помощь от сообщества Pandoge.
Подняться наверх
«Pandoge» - помощник вебмастера