在我的网站上,我有一个包含公告的部分,现在我正在使用一个工具,允许版主编辑或发布新的公告。 当主持人发布公告时,他有一个表格,其中包含标题的输入和文章内容的文本框。我在包含文章内容的变量中使用nl2br()函数(在所有换行符之前插入HTML换行符)。 因此,当我在数据库中插入一篇文章时,它将如下所示:
First row ...<br />Second row.<br /><br />Regards,<br />Moderators team
当主持人想要编辑文章时,我有一个包含文章的文本框:
<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 :(得分:1)
问题是nl2br: 在字符串中的所有换行符之前插入HTML换行符 http://www.php.net/manual/en/function.nl2br.php
所以在nl2br之后你会有两个换行符和<br />
- 标记
尝试使用$content = preg_replace("~\r?\n~", "<br />", $content);
代替换行符。
答案 1 :(得分:0)
保存到数据库时,请勿转换新行。如果您只是在动态显示HTML页面时转换它们,那么当您回显到textarea时,则不需要将它们转换回来。
答案 2 :(得分:0)
保存到数据库时不要替换换行符。