我遇到一个问题,PHP(5.2)无法在字符串中找到字符“”,尽管它显然存在。
我意识到潜在的问题与字符编码有关,但不幸的是我无法控制源内容。我收到它为UTF-8,字符串中已有这些字符。
我只想将其从字符串中删除。 strpos(),str_replace(),preg_replace(),trim()等无法正确识别它。
我的字符串是这样的:
"Â Â Â A lot of couples throughout the World "
如果我这样做:
$string = str_replace('Â','',$string);
我明白了:
"� � � A lot of couples throughout the World"
我甚至在str_replace之前尝试过utf8_encode()和utf8_decode(),但没有运气。
解决方案是什么?我一直在扔掉我能找到的一切......
答案 0 :(得分:4)
$string = str_replace('Â','',$string);
这个''编码怎么样?如果您的脚本文件保存为iso-8859-1,则字符串'Â'
编码为单字节序列xC2,而(/ one)utf-8表示形式为xC3 x82。 php的str_replace()在字节级别上工作,即它只“知道”单字节字符。
答案 1 :(得分:3)
我用这个:
function replaceSpecial($str){
$chunked = str_split($str,1);
$str = "";
foreach($chunked as $chunk){
$num = ord($chunk);
// Remove non-ascii & non html characters
if ($num >= 32 && $num <= 123){
$str.=$chunk;
}
}
return $str;
}
答案 2 :(得分:1)