2011-07-11 29 views
2

我在我的網站上有WMD編輯器,並且我在數據庫中存儲了降價。但在發送數據庫降價之前,我使用mysql_real_escape_string過濾它,如下所示:PHP淨化降價 - html輸出

$to_database = mysql_real_escape_string($_POST['markdown']); 

而且沒關係。但現在我想展示它,所以我使用PHP Markdown(將markdown轉換爲html)。但問題是,它顯示我\ r \ n\ n而不是新行。我試過nl2br函數,但它沒有幫助。即使我不逃避輸出(不要將markdown轉換爲html並使用htmlpurifier),我仍然會獲得\ n而不是新行。 只有當我刪除mysql_real_escape_string它看起來不錯。

bbbbbbbbbbb nnnnnnnnn爲

回答

0

他們正在轉換,不再作爲換行符。要替換它們:

$markdown = str_replace('\r\n','<br/>',$_POST['markdown']); 
$markdown = str_replace('\n','<br/>',$markdown); 

您還可能要做到這一點:

$markdown = html_entity_decode($markdown); 
+0

謝謝,但它顯示了我在文本中的
(它是< br/>在源代碼中)。 PHP Markdown以某種方式將
轉換爲我認爲的html實體(因爲當我刪除了php markdown處理時,我得到了換行符)。 – apdpdpdpddc

+0

檢查編輯,您可能要使用html_entity_decode – Eddie

+0

謝謝,它現在可以工作。 – apdpdpdpddc

0

你可能有一些坐在你的輸入層上,並用反斜槓逃逸進入角色,這樣當你使用mysql_real_escape_string你實際上獲得了雙重轉義的內容。

如果你很不走運,那東西可能是magic_quotes_gpc在這種情況下,你應該儘快get rid of it,或者如果你真的不能那麼work around it

+0

magic_quotes_are disabled。 – apdpdpdpddc