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 中编辑其内容时,它会在末尾添加新的<br/>
。我该如何防止这种情况发生?另外建议是否有其他可以检测超链接等形式的 textarea 替代品?谢谢
【问题讨论】:
您是否在 之后 对内容进行 html 转义? @deceze 你的意思是在渲染给用户再次编辑之前转义? 我的意思是<textarea><?php echo htmlspecialchars(nl2br($text)); ?></textarea>
@deceze 没试过,让我解决。谢谢
@deceze 完全是OT,但你为什么不考虑在这里做一份模组工作呢?我看到你对 PHP 标记的问题非常活跃
【参考方案1】:
您可以将用户提供的文本区域的内容存储在数据库中;所以无需调用 nl2br。
然后只调用 nl2br,一旦您从数据库中检索到相同的文本并想要打印到网页。
当您希望用户在 textarea 中再次对其进行编辑时,请从数据库中检索当前内容,并且这次不要调用 nl2br。
【讨论】:
【参考方案2】:如果你用“\n”保留文本,你可以简单地在textarea中插入文本,但如果你用<br />
保留文本,在textarea中插入文本之前,你应该在“\n”上替换<br />
,为例如$text = str_replace("<br />","\n",$text);
或从这个页面http://php.net/manual/en/function.nl2br.php 尝试一些东西,cmets 中有很多函数可以替换上的<br />
\n
【讨论】:
以上是关于php nl2br 反之亦然问题的主要内容,如果未能解决你的问题,请参考以下文章