5

可能重复:
如何替换字符串中的�

我正在从来自数据库的 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"));
}
4

2 回答 2

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 ""

于 2012-12-27T20:21:10.887 回答
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;
}
?>
于 2012-12-27T20:06:09.420 回答