我设置了一个系统,供用户将他们的文章提交到我的数据库中。因为它只是 HTML,所以我不想指望他们知道如何输入<br />
每次有换行符时,所以我使用 PHP 函数nl2br()
在输入上。
我还提供了一个文章修改工具,它将把他们的文章带回到表单中(但是这是一个不同的页面)并允许他们进行编辑。在这样做的过程中,<br />
元素也出现了(仍然有换行符)。为了补救
出现的元素(无论如何,这是我预料到的)我添加了preg_replace('/<br(\s+)?\/?>/i', "\n", mysql_result($result,$i,"content"))
我在这个网站的另一个问题中发现了这一点。它的作用是删除<br />
元素,但由于它用换行符替换它们,并且换行符本来会保留下来,因此每次编辑帖子时,都会添加越来越多的换行符,每次段落之间的间距越来越大。这是用户无法理解的。
举个例子,假设我在文章提交表单中输入以下内容:
Hello, this is my article.
I am demonstrating a new line here.
这将转换为:
Hello, this is my article.<br />
I am demonstrating a new line here.
请注意,即使换行符已转换,文本中仍然存在换行符。在编辑表单中,<br />
将被转换回换行符,如下所示:
Hello, this is my article.
I am demonstrating a new line here.
因为<br />
被转换为换行符,但已经有换行符了。所以我想我期待的是它最初被转换成这样的东西:
Hello, this is my article.<br />I am demonstrating a new line here.
我想知道...有没有办法阻止nl2br()
维持原始换行符的功能?可能和Windows有关系\r\n
特点?