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

Описание

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

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, если возникла ошибка.

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

Версия Описание
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