【发布时间】:2012-10-02 19:39:38
【问题描述】:
我一直在阅读其他一些问题,但我仍然坚持将包含重音字符的字符串转换为纯字符(我的意思是 a-z)的问题
我有一个产品名称“Á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”
我还发现了一个字符串替换函数来清除重音,但我似乎无法将非 html 字符串传递给它
$name = strtr($name,'àáâãäçèéêëìíîïñòóôõöùúûüýÿÀÁÂÃÄÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝ','aaaaaceeeeiiiinooooouuuuyyAAAAACEEEEIIIINOOOOOUUUUY');
有人可以提供解决方案吗?服务器正在运行 PHP 5.2.13。 iconv 已启用 glibc 2.5(输入/内部/输出编码在 phpinfo 中为 ISO-8859-1)
【问题讨论】:
-
我觉得不错ideone.com/UrGfn
-
I have a product name "Áhkká" which is already encoded as "Áhkká" -
看起来你的语法错误是因为忘记了分号:
return $name; -
@Musa - 我仍然得到?hkk?,Mahn,数据来自第 3 方(CSV 数据),所以我无法控制。 GigaWatt - 谢谢,我更新了我的问题,但这不是问题。
-
试音后转回utf-8。