0

当我从本网站的元描述标签中检索报价时:http: //mashable.com/2011/04/14/google-computers-regret/

“遗憾”一词周围的引号返回为问号。

我正在使用以下代码,而 $str 是返回的元数据:

if(mb_detect_encoding($str, 'UTF-8, ISO-8859-1', true) != 'ISO-8859-1') $str = utf8_decode($str); 
$str = strtr($str, get_html_translation_table(HTML_ENTITIES)); 
$str = strip_tags(html_entity_decode(htmlspecialchars_decode($str,  ENT_NOQUOTES), ENT_NOQUOTES, "UTF-8"));
$str = html_entity_decode($str, ENT_QUOTES,"UTF-8");

我怎样才能解决这个问题?

4

2 回答 2

0

将生成的 HTML 输出为 UTF-8。

于 2011-04-15T06:55:42.220 回答
0

这是一个原始修复,我确信有更好的方法,但是:

$str = str_replace( array( "“" , "”" ) , '"' , $str );

那应该用简单的引号替换这些程式化的引号并防止问号问题。

(很高兴学习比这个笨重的解决方案更好、更智能的解决方案。)

根据以下评论修改:

$str = str_replace( array("\xe2\x80\x9c", "\xe2\x80\x9d", "\xe2\x80\x98", "\xe2\x80\x99") , '"' , $str );

您可以使用此函数用相同的替换 str 替换多个模式(保存在数组中) - 比必须填充具有相同内容的数组或在不需要时创建一个笨重的函数要好。

于 2011-04-15T05:42:26.223 回答