2011-10-01 153 views
2

新行我有一個MySQL表2列:PHP更換存儲在MySQL數據庫

  1. text:存儲可能有換行符爲\n, \r, \r\n...多行文本。該文本通過網絡表單插入,並且可以通過任何操作系統上的任何瀏覽器插入。

  2. line_break:表示此特定文本將使用哪種類型的換行符(可能是\n,<br>,<br />,...)。這也通過用戶的網絡表單插入。

在PHP中我然後做替換:

$text = preg_replace ("/(\r\n|\r|\n)/", $row['line_break'], $row['text']); 

有趣的是,如果換行符存儲在數據庫作爲\n我將實際顯示\n,而不是換行。在另一方面,下面的正則表達式將正常工作:

$text = preg_replace ("/(\r\n|\r|\n)/", "\n", $row['text']); 

如何,我需要正確地存儲在數據庫中換行符爲它的「工作」?

+2

mysql用這個問題做什麼? –

+1

@YourCommonSense:標題中出現了MySQL這個詞,實際上這個問題是關於MySQL的,因爲現在用戶想要'我如何在數據庫中存儲換行符以使它正確工作?' 。 – Helmut

回答

4

在php中,"\n"是一個特殊的符號,用於表示「換行」的特殊字符。但是,如果將實際文本\n存儲在數據庫中,則只有該文本,而不是換行符。當您在PHP中編寫'\n'"\\n"時,您會得到什麼。確保將實際換行符存儲在數據庫中,而不是文字\n文本。

+0

@GolezTirol,我如何讓用戶插入實際的換行符?要添加第二個斜槓,我嘗試用addslashes,但似乎沒有工作。 –

+2

只要讓他們在文本區域輸入一個輸入內容,或者使用'str_replace'用''\ n「'替換'\ n''。 – GolezTrol