idn_to_ascii

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.2, PECL idn >= 0.1)

idn_to_asciiПреобразовывает доменное имя в формат ASCII по спецификации IDNA

Описание

Процедурный стиль

function idn_to_ascii(
    string $domain,
    int $flags = IDNA_DEFAULT,
    int $variant = INTL_IDNA_VARIANT_UTS46,
    array &$idna_info = null
): string|false

Функция преобразовывает доменные имена в кодировке Юникод в формат, совместимый со стандартом 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, если возникла ошибка.

Список изменений

Версия Описание
8.4.0 Теперь выбрасывает исключение ValueError, если параметр domain пустой.
8.4.0 Теперь выбрасывает исключение ValueError, если параметр variant не равен INTL_IDNA_VARIANT_UTS46.
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"

Смотрите также

  • idn_to_utf8() - Преобразование доменного имени из IDNA ASCII в Unicode