(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.2, PECL idn >= 0.1)
idn_to_ascii — Преобразовывает доменное имя в формат ASCII по спецификации IDNA
Процедурный стиль
$domain,$flags = IDNA_DEFAULT,$variant = INTL_IDNA_VARIANT_UTS46,&$idna_info = nullФункция преобразовывает доменные имена в кодировке Юникод в формат, совместимый со стандартом ASCII, и возвращает результат в нижнем регистре. Доменные имена, в состав которых входят символы национальных алфавитов, обрабатываются по правилам механизма интернационализации доменных имён в приложениях — IDNA (англ. Internationalizing Domain Names in Applications).
domainДомен с символами в кодировке UTF-8, которые требуется преобразовать.
flagsОпции преобразования — комбинация констант семейства IDNA_*, кроме констант семейства IDNA_ERROR_*.
variant
Константа INTL_IDNA_VARIANT_2003 (устарела с PHP 7.2.0) для преобразования домена по правилам спецификации IDNA 2003
или константа INTL_IDNA_VARIANT_UTS46 (доступна только с ICU 4.6) для преобразования по правилам спецификации UTS #46.
idna_info
Параметр влияет на результат только при передаче константы
INTL_IDNA_VARIANT_UTS46 в параметр
variant. Функция заполнит переменную
массивом с ключами 'result' — домен в ASCII-формате,
возможно, с ошибками преобразования, 'isTransitionalDifferent' —
логическое значение, которое указывает, повлиял ли переходный механизм протокола UTS #46 на результат или мог бы повлиять,
и 'errors' — значение int, которое представляет битовую маску из констант
семейства IDNA_ERROR_*.
Функция возвращает доменное имя, закодированное в формате, совместимом со стандартом ASCII, или false, если возникла ошибка.
| Версия | Описание |
|---|---|
| 7.4.0 |
Значением по умолчанию для параметра variant
стала константа INTL_IDNA_VARIANT_UTS46 вместо устаревшего
варианта INTL_IDNA_VARIANT_2003.
|
| 7.2.0 |
Константа INTL_IDNA_VARIANT_2003 устарела
в пользу варианта INTL_IDNA_VARIANT_UTS46.
|
Пример #1 Пример преобразования национального доменного имени функцией idn_to_ascii()
<?php
echo idn_to_ascii('täst.de');
?>Результат выполнения приведённого примера:
xn--tst-qla.de
Пример #2 Пример обработки доменного имени, которое состоит только из ASCII-символов
<?php
// ASCII-домены функция только приводит к нижнему регистру
var_dump(idn_to_ascii('Example.com'));
?>Результат выполнения приведённого примера:
string(11) "example.com"