2015-07-05 3 views
0

Когда я перейду к aртем.example.com, веб-браузер преобразует URL-адрес в xn--a-jtbvok.example.com. Есть ли способ конвертировать xn--a-jtbvok обратно в aртем с помощью PHP?Международные доменные имена

В настоящее время я использую $_SERVER['HTTP_HOST'] для извлечения запрошенного URL-адреса.

Примеры использования здесь: aртем.lekintepls.se и åäö.lekintepls.se.

Я понятия не имею, как это явление называется, поэтому я сожалею, если это дубликат.

+0

Я бы рекомендовал использовать только * стандартные * символы в URL-адресах, но почему бы вам просто не проверить, соответствует ли это xn-a-jtbvok? 'if ($ _SERVER ['HTTP_HOST'] === 'xn - a-jtbvok') {/ * ... * /}' – tleb

+0

Я хочу, чтобы субдомен отображался на странице, точно так же, как сейчас. Это буквально единственная цель сайта. Выполнение проверок для всех возможных субдоменов невозможно. –

+0

Как сказано [здесь] (http://stackoverflow.com/a/1916747/4255615), URL-адреса должны содержать только * стандартные * символы. – tleb

ответ

2

Эта нотация называется Punycode или IDNA (интернационализация доменных имен в приложениях).

Вы можете использовать idn_to_utf8 и idn_to_ascii для преобразования между двумя обозначениями.

+0

Спасибо, он отлично работает! –

0

Как цитирует here, то RFC 1738 говорит, что:

Таким образом, только буквенно-цифровые, специальные символы "! $ -_ + * '()," и зарезервированные символы используются для их зарезервированных целей может использовать некодированные URL.

Это означает, что символы Юникода не должны использоваться в URL-адресах.

Смежные вопросы