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
hpclasses.org
$IDN = new idna_convert();
$domain = 'домен.рф';
$input = $IDN->encode($

На выходе мы получим punycode этого домена xn--d1acufc.xn--p1ai

Один очень важный момент, который никак нельзя упустить это кодировка. Домен, который мы кодируем в punycode обязательно должен быть в UTF-8, хотя в 2011 использовать не UTF-8 было бы мягко говоря неумно.

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


 

 

Random Posts

  • Android 4+ как сделать скриншот без root

    В маркете полно приложений, которые делают скриншоты но для их работы нужно рутовать устройства. Лично я не собираюсь рутовать свое […]

  • PHP получить sha256 хэш строки, используя mhash

    К сожалению в php 5 нет встроенной функции для получения sha256 хэша, в отличие от md5. А использовать md5  в […]

  • Linux su шпаргалка

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

  • MySQL error USING BTREE

    Только начинаю понимание этой проблемы. При импорте дампов сделанных через СУБД (phpMyAdmin, adminer.php) или ssh-командой возникает ошибка в районе строки […]

5 thoughts on “PHP преобразовать рф домен в punycode

  1. Грамотный класс, простой главное и то что нужно, а то скрипт мой чего то не хочет кирилические домены обрабатывать, ерунда говорит этот ваш РФ 🙂

  2. Здравствуйте! Так все работает:
    decode($domain);
    echo $input;
    ?>
    Вопрос как правильно записать в строку $domain значение, чтобы данные брались из адресной строки браузера??
    Вариант не работает, хотя скорее всего тут еще и синтаксис не правильный (не владею PHP):
    $domain = »;

    Задача вывести в тексте punycode адрес домена русскими буквами (на сайте много зеркал, поэтому есть необходимость использовать $_SERVER[‘HTTP_HOST’])
    Подскажите как правильно это оформить в коде??

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

*
*