Idn 関数
PHP Manual

idn_to_ascii

(PECL idn >= 0.1)

idn_to_asciiUTF-8 エンコードされたドメイン名を ASCII に変換する

説明

string idn_to_ascii ( string $utf8_domain [, int &$errorcode ] )

この関数は、UTF-8 でエンコードされたドメイン名を IDNA の toUnicode() 仕様にもとづいて ASCII に変換します。入力に非 ASCII 文字が含まれる場合は、 出力は "xn--" のような ACE 記法となります。

パラメータ

utf8_domain

UTF-8 エンコードされたドメイン名。

警告

たとえば ISO-8859-1 (Western Europe latin1) エンコードの文字列を渡したりすると、 ACE エンコードされた "xn--" 文字列に変換されます。 しかし、これはきっとお望みのものではないでしょう!

errorcode

IDNA エラーコードが設定されます。

返り値

ACE エンコードされたドメイン名、あるいはエラー時に FALSE を返します。

エラー / 例外

エラーが発生した場合は、返り値が FALSE となってオプションのエラーコードが設定されます。 さらに E_WARNING メッセージも表示されます。

例1 idn_to_ascii() の例

まずは単純な例を示し、その後でエラー処理の方法を説明します。

<?php

// ISO-8859-1 エンコードされた文字列
echo idn_to_ascii(utf8_encode('tast.de'))); 

// "xn--" ではじまる非 ASCII 文字を含むドメイン名は ASCII に変換できません
$ascii idn_to_ascii("xn--".chr(0xC3).chr(0xA4), $errorcode);
if (
$ascii === false) {
    
printf("Detected error %d: %s\n"$errorcodeidn_strerror($errorcode));
}

?>

上の例の出力は、たとえば 以下のようになります。

xn--tst-qla.de

Detected error 8: Input already contain ACE prefix (`xn--')

参考


Idn 関数
PHP Manual
アダルトレンタルサーバー