【问题标题】:php nl2br vice versa issuesphp nl2br 反之亦然问题
【发布时间】: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 标记的问题非常活跃

标签: php nl2br


【解决方案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

    【讨论】:

      猜你喜欢
      • 2013-08-16
      • 2012-06-27
      • 1970-01-01
      • 1970-01-01
      • 2015-01-12
      • 1970-01-01
      • 2012-06-13
      • 1970-01-01
      • 2018-02-10
      相关资源
      最近更新 更多