setlocale(LC_ALL, 'en_US.UTF8');
$string= 'ṃỹṛèşưḿĕ';
echo iconv('UTF-8', 'ASCII//TRANSLIT', $string);
犯了错误...
应打印:我的简历
发布于 2011-02-19 12:55:49
这取决于iconv库。
在Ubuntu 10.10中,我得到了这个:
$ php -i | egrep "iconv (implementation|library)"
iconv implementation => glibc
iconv library version => 2.12.1
$ php a.php
myresume
但是在另一台使用GNU iconv的机器上:
iconv implementation => libiconv
iconv library version => 1.11
# php a.php
Notice: iconv(): Unknown error (88) in /tmp/root/a.php on line 5
iconv所做的音译在不同的实现中并不一致。例如,glibc实现将é
音译为e
,而libiconv将其音译为'e
。
除非我们在PHP中支持ICU音译器(预计在下一个版本中),否则将没有可靠的方法来可靠地执行这些转换(尽管如果您只想删除标记,可以使用other solutions)。在PHP的开发版本中,使用intl扩展可以做到这一点:
<?php
$t = Transliterator::create("latin; NFKD; [^\u0000-\u007E] Remove; NFC");
echo $t->transliterate('Ναδάλης ṃỹṛèşưḿĕ');
这给了我们
Nadales myresume
https://stackoverflow.com/questions/5048401
复制相似问题