为什么 Translit 不起作用?
setlocale(LC_ALL, 'en_US.UTF8');
$string= 'ṃỹṛèşưḿĕ';
echo iconv('UTF-8', 'ASCII//TRANSLIT', $string);
出错...
应该打印:myresume
setlocale(LC_ALL, 'en_US.UTF8');
$string= 'ṃỹṛèşưḿĕ';
echo iconv('UTF-8', 'ASCII//TRANSLIT', $string);
makes error...
should print: myresume
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这取决于 iconv 库。
在 Ubuntu 10.10 中,我得到这个:
但在另一台使用 GNU iconv 的机器上:
iconv 完成的音译在不同实现中并不一致。例如,glibc 实现将
é
音译为e
,但 libiconv 将其音译为'e
。在我们在 PHP 中支持 ICU 音译器(下一个版本)之前,不会有可靠的方法来可靠地进行这些转换(尽管如果您只想删除标记,可以使用 其他解决方案)。在 PHP 的开发版本中,使用 intl 扩展,可以执行以下操作
:
It depends on the iconv library.
In Ubuntu 10.10, I get this:
But on another machine using the GNU iconv:
The transliteration done by iconv is not consistent across implementations. For instance, the glibc implementation transliterates
é
intoe
, but libiconv transliterates it into'e
.Until we have support for ICU transliterators in PHP (due for the next version), there won't be a realiable way to reliable do these transformation (though if you only want to remove marks, there are other solutions). In the development version of PHP, with the intl extension, it's possible to do this:
which gives