用PHP中的"等效"ASCII替换变音字符?

Dol*_*lph 14 php diacritics character-encoding

相关问题:

  1. 如何替换java String中的字符?
  2. 如何用C#中的等效字符替换特殊字符(例如"á"代替"a")?

正如上面的问题,我正在寻找一种可靠,强大的方法,使用PHP将任何unicode字符减少到接近等效的ASCII.我真的想避免滚动我自己的查找表.

例如(从第一个被引用的问题被盗):Gra?iš?e变成Gracisce

zom*_*bat 32

所述的iconv模块可以做到这一点,更具体地说,所述的iconv()函数:

$str = iconv('Windows-1252', 'ASCII//TRANSLIT//IGNORE', "Gracišce");
echo $str;
//outputs "Gracisce"
Run Code Online (Sandbox Code Playgroud)

使用iconv的主要麻烦在于你只需要观察你的编码,但它绝对是适合这项工作的工具(由于我正在使用的文本编辑器的限制,我使用'Windows-1252'作为示例;)该功能你肯定想要使用的//TRANSLITiconv标志,它告诉iconv将任何没有ASCII匹配的字符音译成最接近的近似值.

  • 注意,当语言环境类别"LC_CTYPE"设置为"C"或"POSIX"时,这不能正常工作(您可以使用`echo setlocale(LC_ALL,0);`来检查您的语言环境.所有非ascii字符都将转换为`?`.相反,您需要首先将语言环境设置为其他内容:例如`setlocale(LC_ALL,"en_US.UTF-8")`. (4认同)