2014-11-02 72 views
1

我有一個字符串,其中包含特殊引號字符(「 」)以及其他可能需要轉義才能正確呈現的字符。如何逃避「和」與PHP?

我嘗試使用

htmlentities($string, ENT_QUOTES, "UTF-8") 

但是似乎對工作不。我認爲他們會變成“”,但他們不會。

當他們沒有在我的html文檔中轉義時,這些字符在Firefox中呈現爲 。

也許我有什麼毛病我的編碼設置,因爲他們似乎在這個崗位工作正常不被轉義..

然而,這一切看起來是正確的對我說:

  • Content-Type是設置爲UTF-8在<head>

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    
  • 根據file,該文件是保存d爲UTF-8

    index.phtml: HTML document, UTF-8 Unicode text, with very long lines 
    
  • Firefox的文件識別爲UTF-8

然而,直「和」■不要正確渲染,但逃脫版本(&ldquo;&rdquo;)做的。

+0

彎引號替換字符串不是特殊,他們並不需要進行轉義。 – Barmar 2014-11-02 02:58:32

+0

@Barmar然後他們爲什麼渲染有趣?我在中將字符集設置爲UTF-8:'' – gandalf3 2014-11-02 02:59:01

+1

您可能沒有指定正確的編碼在'Content-type'中。 – Barmar 2014-11-02 02:59:34

回答

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;

+0

我想有引號渲染,因爲它們是,最好..更換'「'和''“傳遞字符串爲'ヶ輛前'在連字符號的結果得到轉化爲''&所以它字面上呈現爲“。在替換之前通過'htmlentities'運行它會使字符串完全消失。 – gandalf3 2014-11-02 19:47:18

+0

現在至少它沒有'htmlentities',所以我接受了你的答案。謝謝 :) – gandalf3 2014-11-02 19:51:01

-1

逃脫引號使用backslah \所以基本上你的代碼看起來像htmlentities($string, ENT_QUOTES, \"UTF-8\")

+0

我不想逃避這些報價,我想爲了躲避特殊字符報價'「'和'」'如問題陳述.. – gandalf3 2014-11-02 03:07:57

0
$quoteLeft = ' 「 ' ; 

$quoteRight = ' 」 ' ; 

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

htmlentities($string, ENT_QUOTES, $utf);  
+0

我不想逃避這些報價,我想逃避特殊字符報價'「'和'」'如在規定問題.. – gandalf3 2014-11-02 03:09:31

+0

希望它能幫助:) – SergeDirect 2014-11-02 03:21:45

+0

爲什麼downwoted - 我已經改正了我的答案 – SergeDirect 2014-11-02 11:24:03