(PECL idn >= 0.1)
idn_to_utf8 — ASCII エンコードされたドメイン名を UTF-8 に変換する
この関数は、ASCII でエンコードされたドメイン名を元の UTF-8 版に変換します。
ASCII エンコードされたドメイン名。非 ASCII 文字が含まれていた場合は "xn--..." のようになります。
IDNA エラーコードが設定されます。
UTF-8 エンコードされたドメイン名、あるいはエラー時に FALSE を返します。 しかし、RFC 3490 4.2 によると「ToUnicode は決して失敗しません。 もし何らかの時点で失敗した場合は、その時点で元の入力シーケンスをそのまま返します」 とのことです。
エラーが発生した場合は、返り値が FALSE となってオプションのエラーコードが設定されます。 さらに E_WARNING メッセージも表示されます。
例1 idn_to_utf8() の例
まずは単純な例を示し、その後でエラー処理の方法を説明します (RFC によると決してエラーは発生しません)。
<?php
// おそらく utf8_decode() で結果を ISO-8859-1 に変換したもの
echo idn_to_utf8("xn--tst-qla.de");
// 決して起こりえませんが、念のため……
$utf8 = idn_to_utf8("xn--tst-qla.de", $errorcode);
if ($utf8 === false) {
printf("Detected error %d: %s\n", $errorcode, idn_strerror($errorcode));
}
?>
上の例の出力は、たとえば 以下のようになります。
tast.de