如何用PHP逃避“和”?

时间:2014-11-02 02:58:01

标签: php html encoding

我有一个字符串,其中包含特殊引号字符(“”),以及可能需要转义以便正确呈现的其他字符。

我尝试使用

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

但是,直接“和”无法正确呈现,但转义版本(&ldquo;&rdquo;)可以。

3 个答案:

答案 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")

在您的情况下"在浏览器中正确呈现,字符串将正确显示。

另一种方法是用&ldquo;&rdquo;

替换字符串

答案 1 :(得分:0)

$quoteLeft = ' “ ' ;

$quoteRight = ' ” ' ;

$utf = ''.$quoteLeft.'UTF-8'.$quoteRight.'';

htmlentities($string, ENT_QUOTES, $utf);    

答案 2 :(得分:-1)

要转义使用反斜杠\的引号,所以基本上您的代码看起来像htmlentities($string, ENT_QUOTES, \"UTF-8\")