我正在读取来自数据库的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"));
}
答案 0 :(得分:3)
你可以这样做:
$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 ""
答案 1 :(得分:2)
你可以做类似的事情:
<?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;
}
?>