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

Php 元描述编码-引号作为问号返回,php,encoding,quotes,meta,utf,Php,Encoding,Quotes,Meta,Utf,当我从该站点的meta description标记检索引号时: “遗憾”一词的引号作为问号返回 我使用以下代码,而$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

当我从该站点的meta description标记检索引号时:

“遗憾”一词的引号作为问号返回

我使用以下代码,而$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");

如何修复此问题?

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

$str = str_replace( array( "“" , "”" ) , '"' , $str );
这应该用一个简单的引号取代这些样式化的引号,并防止出现问号问题

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

根据以下意见修订:

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

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

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

PHP正在解释这些“样式化的”引用为我的常规引用,不进行替换我发现这些引用被称为“卷曲引用”,当然是由Microsoft引入的。。。下面是一个替换它们的函数:
function fixcurly($string){$search=array(“\xe2\x80\x9c”、“\xe2\x80\x9d”、“\xe2\x80\x98”、“\xe2\x80\x99”);$replace=array(“,”,“,“,”,“,”)”);返回str\u replace($search,$replace,$string)}
您试图完成什么?