如何删除“�&引用;从php字符串?

如何删除“�&引用;从php字符串?,php,string,utf-8,byte-order-mark,Php,String,Utf 8,Byte Order Mark,可能重复: 我正在从数据库中的XML表中读取数据。在原始输出中,我遇到了这个字符“ëë½”,它是UTF-8字符串的意思”�". 使用str_replace执行简单的搜索并删除不会在搜索“”时起作用�“或”ïïs。是否有其他方法从字符串中删除此字符 更新: 作为参考,这是为我清理字符串的函数 function db_utf8_convert($str) { $convmap = array(0x80, 0x10ffff, 0, 0xffffff); return pr

可能重复:

我正在从数据库中的XML表中读取数据。在原始输出中,我遇到了这个字符“ëë½”,它是UTF-8字符串的意思”�". 使用str_replace执行简单的搜索并删除不会在搜索“”时起作用�“或”ïïs。是否有其他方法从字符串中删除此字符

更新:

作为参考,这是为我清理字符串的函数

    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"));
}

你可以做类似的事情:

<?php
$string = "asd fsa fsaf sf � asdfasdfs";

echo preg_replace("/[^\p{Latin} ]/u", "", $string);

您可以执行以下操作:

$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字符串的意思是“

第一个结果是一个非常简单的问题,回答:?½不确定这是否有帮助。在询问此问题之前,尝试使用与php等效的语句,但不起作用。这是UTF-8 BOM� 表示无效字符。如果使用解析器,则不会出现此问题。这也会删除许多其他字符。这就是我添加链接的原因,其中包含更多组合。的确,但列出的任何脚本都会删除该脚本中的所有字符,而不仅仅是这3个字符。如果有人可以发布只删除BOM的preg_匹配那将非常壮观。不,那些小BOM仍然在使用该功能。我对此寄予厚望,但遗憾的是它对我不起作用。@jlane09如果我的第一个答案不起作用,那是因为您的服务器使用的是UTF-8以外的编码,所以我为您更新了我的答案。仍然不想工作,我感谢您的支持不过,这是徒劳的。是的,我想可能不会,因为
mb\u detect\u encoding()
非常有限!您为什么没有将数据库和服务器上的编码设置为UTF-8?这将防止将来和当前出现很多问题。我插入这些字符串的数据库是UTF-16编码的。我不确定它来自哪个数据库,也无法控制它。它运行的服务器是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));