2012-02-20 98 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); ,它取代了换行符。