我在从字符串中删除非utf8字符时遇到问题,这些字符无法正常显示.字符是这样的0x97 0x61 0x6C 0x6F(十六进制表示)
删除它们的最佳方法是什么?正则表达式还是其他什么?
我想用引号替换无效的UTF-8字符(PHP 5.3.5).
到目前为止,我有这个解决方案,但删除了无效字符,而不是被'?'取代.
function replace_invalid_utf8($str)
{
return mb_convert_encoding($str, 'UTF-8', 'UTF-8');
}
echo mb_substitute_character()."\n";
echo replace_invalid_utf8('éééaaaàààeeé')."\n";
echo replace_invalid_utf8('eeeaaaaaaeeé')."\n";
Run Code Online (Sandbox Code Playgroud)
应输出:
63 // ASCII code for '?' character
???aaa???eé // or ??aa??eé
eeeaaaaaaeeé
Run Code Online (Sandbox Code Playgroud)
但目前产出:
63
aaaee // removed invalid characters
eeeaaaaaaeeé
Run Code Online (Sandbox Code Playgroud)
有什么建议?
你会用另一种方式(preg_replace()例如使用?)
谢谢.