我有一个字符串,其中包含特殊引号字符(“”),以及可能需要转义以便正确呈现的其他字符。
我尝试使用
htmlentities($string, ENT_QUOTES, "UTF-8")
但它似乎不适用于“
和”
。我认为他们会变成“
和”
,但他们不会。{/ p>
当它们没有在我的html文档中转义时,这些字符在firefox中呈现为 。
也许我的编码设置有问题,因为它们似乎在这篇文章中工作正常而没有被转义..
然而一切看起来都对我不对:
Content-Type
中的<head>
设置为UTF-8:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
根据file
,文档保存为UTF-8
:
index.phtml: HTML document, UTF-8 Unicode text, with very long lines
Firefox将该文件识别为UTF-8
。
但是,直接“和”无法正确呈现,但转义版本(“
和”
)可以。
答案 0 :(得分:1)
此功能可将“
和”
转换为"
。
function convert_smart_quotes($string)
{
$search = array(chr(147), chr(148));
$replace = array('"', '"');
return str_replace($search, $replace, $string);
}
因此,在将包含“
或”
的字符串传递给此函数后,可将其传递给
htmlentities($string, ENT_QUOTES, "UTF-8")
在您的情况下"
在浏览器中正确呈现,字符串将正确显示。
另一种方法是用“
和”
答案 1 :(得分:0)
$quoteLeft = ' “ ' ;
$quoteRight = ' ” ' ;
$utf = ''.$quoteLeft.'UTF-8'.$quoteRight.'';
htmlentities($string, ENT_QUOTES, $utf);
答案 2 :(得分:-1)
要转义使用反斜杠\
的引号,所以基本上您的代码看起来像htmlentities($string, ENT_QUOTES, \"UTF-8\")