php nl2br 反之亦然问题

Posted

技术标签:

【中文标题】php nl2br 反之亦然问题【英文标题】:php nl2br vice versa issues 【发布时间】:2013-02-16 22:47:12 【问题描述】:

我目前正在使用文本区域,用户可以在其中提交输入。我正在使用 php nl2br 将任何新行转换为 <br> 如下:

$review_desc = nl2br($this->_getParam('comment'));

但现在我在用户编辑他们的文本时遇到问题,因为我正在获取如下内容:

test1<br />
test2<br />
test3<br />
test4<br />

当用户在 textarea 中编辑其内容时,它会在末尾添加新的&lt;br/&gt;。我该如何防止这种情况发生?另外建议是否有其他可以检测超链接等形式的 textarea 替代品?谢谢

【问题讨论】:

您是否在 之后 对内容进行 html 转义? @deceze 你的意思是在渲染给用户再次编辑之前转义? 我的意思是&lt;textarea&gt;&lt;?php echo htmlspecialchars(nl2br($text)); ?&gt;&lt;/textarea&gt; @deceze 没试过,让我解决。谢谢 @deceze 完全是OT,但你为什么不考虑在这里做一份模组工作呢?我看到你对 PHP 标记的问题非常活跃 【参考方案1】:

您可以将用户提供的文本区域的内容存储在数据库中;所以无需调用 nl2br。

然后只调用 nl2br,一旦您从数据库中检索到相同的文本并想要打印到网页。

当您希望用户在 textarea 中再次对其进行编辑时,请从数据库中检索当前内容,并且这次不要调用 nl2br。

【讨论】:

【参考方案2】:

如果你用“\n”保留文本,你可以简单地在textarea中插入文本,但如果你用&lt;br /&gt;保留文本,在textarea中插入文本之前,你应该在“\n”上替换&lt;br /&gt;,为例如$text = str_replace("&lt;br /&gt;","\n",$text); 或从这个页面http://php.net/manual/en/function.nl2br.php 尝试一些东西,cmets 中有很多函数可以替换上的&lt;br /&gt; \n

【讨论】:

以上是关于php nl2br 反之亦然问题的主要内容,如果未能解决你的问题,请参考以下文章

在 PHP 中使用 nl2br()

使用nl2br的php提交表单

PHP:如何使用带有 HTML Purifier 的 nl2br() 来保持换行符?

php 冷门函数 - nl2br() 函数

PHP nl2p - 替代nl2br

javascript中的nl2br()等价物[重复]