Декодировать кириллический домен на php

Наверняка вы уже видели или используете кириллические домены. Конечно, они красиво смотрятся в браузерной строке и понятны обычным людям, которые не любят латинские символы. Но есть и обратная сторона.

Так если вы скопируете такой домен из браузерной строки и вставите в блокнот, word и т.п, то он будет выглядеть так: http://xn--d1acpjx3f.xn--p1ai/ (яндекс.рф). Эти кракозябры появляются с помощью ACE преобразования на "сервере", чтобы браузер их "понимал" и сайт соответственно открывался.

Некторые скрипты работают только с "некрасивым" видом домена. Поэтому от этих символов никуда не деться. Но если вам, как и мне требуется преобразовать внешний вид таких доменов в нормальный, читабельный вид, то будем использовать php класс idna_convert.class.php и пару строк кода. Рабочий пример и демонстрацию вы можете увидеть ниже.

Рассмотрим код преобразования:

<?php
include('idna_convert.class.php');
$url = 'xn--d1acpjx3f.xn--p1ai';
$IDN = new idna_convert(array('idn_version' => '2008'));
$url=$IDN->decode($url);
echo $url;
?>

Здесь мы сначала подключаем библиотеку idna_convert.class.php. В $url записываем домен в кириллице, который хотим преобразовать. Затем запускаем метод декодирования домена и на выходе получаем домен в читабельном виде.

Думаю, не сложно привести этот код в функцию, в значение которой просто будем добавлять нужный домен и получать его на выходе в нормальном виде. Это я и сделал в примере, который вы скачаете. В нем же я сделал дополнительное условие если мы пытаемся преобразовать нормальный домен, то ничего не произойдет, а если кириллический, то на выходе получим результат. Если вам не нужна данная проверка, ее вы можете отключить.

Кстати моим большим удивлением было узнать, что в Joomla этот класс уже подключен и там не нужно подключать idna_convert.class.php дважды!

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

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


Введите капчу: