PHP – idn_to_ascii() 函数

phpserver side programmingprogramming

PHP 中的 idn_to_ascii() 函数用于将 Unicode 域名转换为 IDNA ASCII 格式。IDNA 代表"应用程序中的国际化域名"。它是一种处理包含非 ASCII 字符的国际化域名的机制。

语法

string idn_to_ascii(
   str $domain,
   integer $flags=IDNA_DEFAULT,
   integer $variant=INTL_IDNA_VARIANT_UTS46,
   arr &$idna_info=null
)

参数

idn_to_ascii() 接受以下四个参数 −

  • $domain − 这是要转换的域名;必须采用 UTF-8 编码。

  • $flags − 此参数是 IDNA_*constants 的组合。

  • $variant − 此参数使用 INTL_IDNA_VARIANT_2003(用于 IDNA 2003)或 INTL_IDNA_VARIANT_UTS46(用于 UTS#46)。

  • $idna_info −此参数仅在 $variant 参数中使用 INTL_IDNA_VARIANT_UTS46 时使用。

返回值

此函数返回以 ASCII 兼容格式编码的域名,失败时返回 False。

示例 1

<?php
   // String domain
   print idn_to_ascii('täst.de',0);
?>

输出

xn--tst-qla.de

示例 2

<?php
// ISO-8859-2 编码字符串
echo idn_to_ascii(utf8_encode('täst.de'));

// 无法将包含非 ASCII 字符的域名转换为 ASCII 码,但
// 该域名已以"xn--"开头
$ascii = idn_to_ascii("xn--".chr(0xC3).chr(0xA4));
print_r($ascii);
?>

输出

xn--tst-fea82a.de

相关文章