idn_to_ascii
(PECL idn >= 0.1)
idn_to_ascii — Convert UTF-8 encoded domain name to ASCII
説明
This function converts a UTF-8 encoded domain name to ASCII according to the IDNA toUnicode() specification. If the input has non-ASCII characters, the output will be in the "xn--" ACE notation.
パラメータ
- utf8_domain
-
The UTF-8 encoded domain name.
警告If e.g. an ISO-8859-1 (aka Western Europe latin1) encoded string is passed it will be converted into an ACE encoded "xn--" string. It will not be the one you expected though!
- errorcode
-
Will be set to the IDNA error code.
返り値
The ACE encoded version of the domain name or FALSE in case of an error.
エラー / 例外
If an error occurs FALSE is returned and the optional errorcode is set. In addition a E_WARNING message is printed.
例
例1 idn_to_ascii() example
First a simple example and then one explaining how to catch errors.
<?php
// ISO-8859-1 encoded string
echo idn_to_ascii(utf8_encode('täst.de')));
// Cannot convert a domain name to ASCII that contains non-ASCII chars but already starts with "xn--"
$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--')
参考
- utf8_encode() - ISO-8859-1 文字列を UTF-8 にエンコードする
- idn_strerror() - Returns string describing the IDNA error code
- itn_to_utf8()
idn_to_ascii
