元描述编码 - 作为问号PHP返回的引号

时间:2011-04-15 04:27:33

标签: php encoding quotes meta utf

当我从此网站的元描述标记中检索引号时: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");

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

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

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

应该用简单的引号替换这些样式化的引号,并防止出现问号。

(很高兴学到比这个笨重更好,更聪明的解决方案。)

根据以下评论进行修订:

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

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

答案 1 :(得分:0)

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