(PECL idn >= 0.1)
idn_to_ascii — UTF-8 エンコードされたドメイン名を ASCII に変換する
この関数は、UTF-8 でエンコードされたドメイン名を IDNA の toUnicode() 仕様にもとづいて ASCII に変換します。入力に非 ASCII 文字が含まれる場合は、 出力は "xn--" のような ACE 記法となります。
UTF-8 エンコードされたドメイン名。
たとえば ISO-8859-1 (Western Europe latin1) エンコードの文字列を渡したりすると、 ACE エンコードされた "xn--" 文字列に変換されます。 しかし、これはきっとお望みのものではないでしょう!
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", $errorcode, idn_strerror($errorcode));
}
?>
上の例の出力は、たとえば 以下のようになります。
xn--tst-qla.de Detected error 8: Input already contain ACE prefix (`xn--')