IDNAのASCII方式でエンコードされたドメイン名をUnicodeに変換する

# idn_to_utf8

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

idn_to_utf8 — IDNAのASCII方式でエンコードされたドメイン名をUnicodeに変換する

### 説明

手続き型

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

IDNAのASCII方式でエンコードされたドメイン名をUTF-8でエンコードされたUnicodeに変換します。

### パラメータ

`domain`

  IDNAのASCII方式でエンコードされた、変換対象のドメイン名

`flags`

  変換オプション - IDNA_ ではじまる定数 (IDNA_ERROR_* 定数を除く) の組み合わせです

`variant`

  IDNA 2003 の場合は `INTL_IDNA_VARIANT_2003` (PHP 7.2.0 以降は非推奨)、あるいは UTS #46 の場合は `INTL_IDNA_VARIANT_UTS46` (ICU 4.6 以降のみ利用可能)。

`idna_info`

  このパラメータを使うのは、`variant` が `INTL_IDNA_VARIANT_UTS46` の場合だけです。 このとき、このパラメータには `'result'`、 `'isTransitionalDifferent'`、そして `'errors'` の三つのキーを含む配列が入ります。 `'result'` にはおそらく不正だと考えられる変換結果、 `'isTransitionalDifferent'` には UTS #46 の非移行的な機能を使って結果を変更したかどうかをあらわす boolean 値、そして `'errors'` はエラー定数 IDNA_ERROR_* のビットセットを表します。

### 戻り値

Unicodeのドメイン名。UTF-8 にエンコードされています。失敗した場合に `false` を返します

### 変更履歴

バージョン | 説明
--- | ---
8.4.0 | `domain` パラメータが空の場合、 ValueError をスローするようになりました。
8.4.0 | `variant` パラメータが `INTL_IDNA_VARIANT_UTS46` でない場合、 ValueError をスローするようになりました。
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_utf8() の例

    <?php

    echo idn_to_utf8('xn--tst-qla.de');

    ?>

上の例の出力は以下となります。

    tast.de

### 参考

- idn_to_ascii() - ドメイン名をIDNAのASCII形式に変換する

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open