2011-01-09 37 views
0

HI,在數據庫中保留用戶註釋格式

我在評論表單上創建用戶將被評論並存儲在MYSQL數據庫中。我面臨的問題是,它作爲單行存儲在數據庫中。它應該以確切的格式存儲在表單中用戶的輸入方式(如新行和所有內容)。我使用PHP將其存儲在MySQL數據庫中。

+0

什麼是數據庫字段類型?你如何推送到數據庫?內容豐富的文本,比如某種標記,是純文本嗎?等等。 – 2011-01-09 14:32:20

回答

4

首先將其作爲文本或longtext存儲。其次,在顯示評論時,使用像nl2br這樣的函數將換行符轉換爲html <br>元素。這樣,換行符被保留。

+0

我想這是有問題的 - 一旦評論被存儲到數據庫中,他將來想要使用什麼格式?如果只有HTML然後將
粘貼到文本中就沒問題。 另一件事 - 克里希納提到(新線和一切)我想知道「一切」是什麼? – diagonalbatman 2011-01-09 14:34:06

0

您可以將註釋以相同的形式存儲在mysql數據庫中。一個區別是,當你檢索註釋時,你的代碼應該查找\ r \ n並解釋它,並且當你在mysql中插入數據時,你將不得不從註釋中轉義'和\字符。

1

如果您將文本放入足夠長的文本類型字段(例如TEXT)(包括用戶輸入中的換行符),那麼您的文本就會很好地存儲在數據庫中。

你的問題是如何顯示文本格式的用戶看到它的方式進入時。這是一個更通用的問題,它只與HTML如何處理空白有關。如Ikke所說,一種方法是在評論上撥打nl2br。這將替換所有換行符(瀏覽器忽略)與<br>標籤,這些標籤對渲染的輸出有明顯的影響。

另一種選擇是將文本放在<pre>...</pre>標記中。這將強制瀏覽器在保留空白的情況下渲染它。

這真的取決於什麼更方便/適合你。

更新:只是要清楚:做修改用戶輸入之前在數據庫中插入它(除非它是你輸入驗證的一部分,例如像從輸入剝離HTML標籤)。將其存儲爲「未修改」格式,並且只能在輸出之前對其進行一些處理。這樣,如果將來輸出頻道發生變化(例如,將註釋導出爲文本文件並將其顯示爲HTML),則始終可以選擇執行正確的處理。

+0

但是,當我將註釋存儲在數據庫中時,它不會存儲用戶鍵入的換行符和其他字符。我不知道爲什麼它被刪除? – Krishna 2011-01-11 17:08:12