1

我一直在阅读其他一些问题,但我仍然坚持将包含重音字符的字符串转换为纯字符(我的意思是 az)的问题

我有一个产品名称“Áhkká”,它已经编码为"Áhkká"

我想将此解码为带重音符号的字符串,然后将其转换为“Ahkka”

到目前为止,我已经尝试过:

function convert($name) {
   $name = html_entity_decode($name,ENT_COMPAT,"UTF-8");
   $name = iconv('UTF-8', 'ASCII//TRANSLIT', $name);
   return $name;
}

我从 iconv 收到错误:“检测到输入字符串中的非法字符”

我也尝试过使用 htmlspecialchars_decode($name); 但这给了我“hkk”</p>

我还找到了一个字符串替换函数来清除重音符号,但我似乎无法将非 html 字符串传递给它

$name = strtr($name,'àáâãäçèéêëìíîïñòóôõöùúûüýÿÀÁÂÃÄÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝ','aaaaaceeeeiiiinooooouuuuyyAAAAACEEEEIIIINOOOOOUUUUY');

有人可以提供解决方案吗?服务器正在运行 PHP 5.2.13。iconv 已启用 glibc 2.5(输入/内部/输出编码在 phpinfo 中为 ISO-8859-1)

4

1 回答 1

1

试图找到解决您的问题的方法,我发现了这个问题:

多字节 strtr() -> mb_strtr()

在选择的答案中,Alix Axel 编写了一个正是您需要的函数:

function Unaccent($string)
{
    return preg_replace('~&([a-z]{1,2})(?:acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml|caron);~i', '$1', htmlentities($string, ENT_QUOTES, 'UTF-8'));
}

echo Unaccent(html_entity_decode('&Aacute;hkk&aacute;'));

印刷Ahkka

于 2012-10-02T21:59:38.150 回答