2012-02-20 82 views
0

在我的網站上有一個公告部分,現在我正在使用一個工具,它允許版主編輯或發佈新公告。 當主持人發佈公告時,他有一個表單,其中包含標題的輸入和文章內容的文本框。我使用nl2br()函數(在所有換行符之前插入HTML換行符)包含文章內容的變量。 所以,當我插入數據庫中的文章會是這樣的:HTML字符串中的間距問題

First row ...<br />Second row.<br /><br />Regards,<br />Moderators team 

當主持人要編輯的文章我有containes文章的文本框:

<textarea name="body" maxlength="1000" cols="105" rows="10"><?php echo str_replace('<br />', "\n", $content); ?></textarea> 

如果主持人單擊保存按鈕(使內部消除任何修改)文章變得像這樣(的
標籤的數量增加一倍):

First row ...<br /><br />Second row.<br /><br /><br /><br />Regards,<br /><br />Moderators team 

任何人都可以幫助我解決這個問題。

+0

看起來它已經第二次通過nl2br()函數了。 – IsisCode 2012-02-20 19:52:22

+0

你不應該插入html中斷到數據庫,但顯示文章時添加它們。 – 2012-02-20 19:53:45

回答

0

保存到數據庫時,請不要轉換新行。如果您只是在HTML頁面上進行轉換時才轉換它們,則不需要將其轉換回給textarea。

0

保存到數據庫時不要替換換行符。

+0

從哪裏入手他不會逃避投入? :o – 2012-02-20 19:57:14

+0

這也取決於用於插入的方法。如果他使用準備好的陳述,插入直接輸入將不會有任何問題。 – Basti 2012-02-20 19:59:47

1

的問題是nl2br: 插入HTML換行符在字符串以前所有換行符 http://www.php.net/manual/en/function.nl2br.php

所以經過nl2br你將有新行和<br />標籤都有效

嘗試$content = preg_replace("~\r?\n~", "<br />", $content); ,它取代了換行符。