2011-03-07 36 views
3

我在表單提交時,通過textarea從admin中檢索存儲在數據庫中的產品描述值。當我從數據庫中選擇描述時,我得到$description = $row['description'];,我想在主頁上回顯$ description,如下所示:echo nl2br($description);但我看到"\r\n"字符而不是創建新行。從我在這裏和在網上發現,必須對雙引號中使用你的字符串,如:如何使用nl2br()處理字符串' r n'?

echo nl2br("Hello, \r\n This is the description"); 

現在,$description從數據庫中值實際上"Hello, \r\n This is the description"但在我的劇本我都使用這樣的:

echo nl2br($description); 

不使BR的,它是outputing \r\n代替。所以,我能做些什麼,根據我的經驗,我不能在這裏使用雙引號。

+0

它是否與\\ r \\ n'中的反斜槓一起存儲? 'nl2br()'應該對一個變量沒有問題。 – 2011-03-07 23:34:41

回答

6

可以傳遞字符串通過nl2br(),像在此之前其轉化爲各自的轉義序列:

$description = nl2br(str_replace('\\r\\n', "\r\n", $description)); 

但什麼是字面擺脫在你的數據庫中首先做?

+0

數據庫插入時應如何處理$ _POST ['description']以保持新行完好無損?謝謝。 – 2011-03-08 00:00:21

+0

@Manny Calavera:如果你還沒有使用textarea,你應該使用它。如果你想確保'\ r \ n'總是成爲一個真正的新行,我想你可以在插入之前簡單地運行'str_replace()',所以你不需要在讀取之後執行它。 – BoltClock 2011-03-08 00:35:20

1

您正在將\r\n的字面值存儲在您的數據庫中,而不是它們表示的實際字符。

請在您的數據庫中驗證。如果您在說明字段中看到\r\n,那麼當您存儲數據時,您可能會轉義反斜槓。

0

它看起來像你的文本包含單個字符\r\n,並不包含實際的換行符。因此,str_replace()應該把工作做好:

echo str_replace('\r\n', '<br>', $description); 
-2

nl2br可以爲「is_xhtml」獲取第二個(可選)參數,該參數將爲您轉換\r\n<br>。只需將您的線路更改爲:

echo nl2br($description, TRUE); 
+3

我不認爲這解決了問題。 – alex 2011-03-07 23:38:56

+0

可選參數默認爲true。 – Adam 2017-05-30 14:46:12