meta描述编码 - 返回问题引号标志着PHP
当我取回从这个网站的meta描述标签的报价:http://mashable.com/2011/04/14/google-computers-regret/meta描述编码 - 返回问题引号标志着PHP
字周围的引号“遗憾”回报问号。
我使用下面的代码,而$ 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相同 - 不必填充具有相同内容的数组,或者在不需要时创建笨重的函数。
PHP正在将那些“风格化”的引号解释为我的常规引用,而不是进行替换 – John 2011-04-15 06:35:18
我发现这些引号被称为“卷曲引号”,并且当然是由微软创建的......这是一个替换函数他们:'函数fixcurly($ string){$ search = array(“\ xe2 \ x80 \ x9c”,“\ xe2 \ x80 \ x9d”,“\ xe2 \ x80 \ x98”,“\ xe2 \ x80 \ x99” ); $ replace = array(''',''',''“,”'“); return str_replace($ search,$ replace,$ string); }' – John 2011-04-15 06:45:45
将生成的HTML输出为UTF-8。
你想完成什么? – Gumbo 2011-04-15 06:59:38