我试图做的重音字符替换在PHP,但得到质朴的结果,我的猜测是因为我使用的是UTF-8字符串和str_replace函数不能正确处理多字节字符串..PHP多字节str_replace?
$accents_search = array('á','à','â','ã','ª','ä','å','Á','À','Â','Ã','Ä','é','è',
'ê','ë','É','È','Ê','Ë','í','ì','î','ï','Í','Ì','Î','Ï','œ','ò','ó','ô','õ','º','ø',
'Ø','Ó','Ò','Ô','Õ','ú','ù','û','Ú','Ù','Û','ç','Ç','Ñ','ñ');
$accents_replace = array('a','a','a','a','a','a','a','A','A','A','A','A','e','e',
'e','e','E','E','E','E','i','i','i','i','I','I','I','I','oe','o','o','o','o','o','o',
'O','O','O','O','O','u','u','u','U','U','U','c','C','N','n');
$str = str_replace($accents_search, $accents_replace, $str);
结果我得到:
Ørjan Nilsen -> �orjan Nilsen
预期结果:
Ørjan Nilsen -> Orjan Nilsen
编辑:我有(按mb_interna我的内部字符处理程序中设置为UTF-8 l_encoding()),$ str的值也是UTF-8,所以我所知道的所有字符串都是UTF-8。 str_replace()是否会检测字符集并正确使用它们?
检查我的答案在这里:在PHP修复字符(http://stackoverflow.com/a/9499771/318380)。这对我帮助很大! – jazkat 2012-02-29 14:12:19