PHP:用UTF-8字符串中最接近的7位ASCII等效字符替换变音符号
时间:2020-03-06 14:58:54 来源:igfitidea点击:
我想做的是从字符串中删除所有重音符号和变音符号,将" lrm"变成" larm",或者将" andr"变成" andre"。我想做的是先对字符串进行utf8_decode,然后在其上使用strtr,但是由于我的源文件另存为UTF-8文件,因此我无法为所有变音符号输入ISO-8859-15字符,因此编辑器会插入UTF -8个字符。
显然,解决方案是拥有一个包含ISO-8859-15文件的包含文件,但是有比包含另一个所需包含文件更好的方法吗?
echo strtr(utf8_decode($input), '???????¥μàá??????èéê?ìí??D?òó????ùú?üY?àáa?????èéê?ìí??e?òó????ùú?üy?', 'SOZsozYYuAAAAAAACEEEEIIIIDNOOOOOOUUUUYsaaaaaaaceeeeiiiionoooooouuuuyy');
更新:也许我对尝试做的事情有点不准确:我实际上并不是要删除变音符号,而是将其替换为最接近的"一个字符ASCII"。
解决方案
好的,我自己找到了一个明显的解决方案,但这并不是性能方面的最佳解决方案...
echo strtr(utf8_decode($input), utf8_decode('???????¥μàá??????èéê?ìí??D?òó????ùú?üY?àáa?????èéê?ìí??e?òó????ùú?üy?'), 'SOZsozYYuAAAAAAACEEEEIIIIDNOOOOOOUUUUYsaaaaaaaceeeeiiiionoooooouuuuyy');
iconv("utf-8","ascii//TRANSLIT",$input);
扩展示例