可能重复:
如何更换�;字符串
我正在从数据库中的XML表中读取数据。在原始输出中,我遇到了字符"ï?½",这是UTF-8字符串,意思是"�".在搜索时,使用str_replace进行简单的搜索和删除不会起到任何作用"�"或"ï?½"。有其他方法可以从字符串中删除此字符吗?
更新:
作为参考,这是为我清理字符串的函数。
function db_utf8_convert($str)
{
$convmap = array(0x80, 0x10ffff, 0, 0xffffff);
return preg_replace('/'x{EF}'x{BF}'x{BD}/u', '', mb_encode_numericentity($str, $convmap, "UTF-8"));
}
您可以这样做:
$str = 'UTF-8 string meaning "�"';
echo preg_replace('/'x{EF}'x{BF}'x{BD}/u', '', iconv(mb_detect_encoding($str), 'UTF-8', $str));
输出:UTF-8 string meaning ""
您可以做类似的事情:
<?php
$string = "asd fsa fsaf sf � asdfasdfs";
echo preg_replace("/[^'p{Latin} ]/u", "", $string);
查看此脚本以获取更多字符匹配:
http://www.regular-expressions.info/unicode.html#script
编辑
我确实发现,人们说它有效,你可以试试:
<?php
function removeBOM($str=""){
if(substr($str, 0,3) == pack("CCC",0xef,0xbb,0xbf)) {
$str=substr($str, 3);
}
return $str;
}
?>