3

我刚开始在我的 php 网站中使用nl2br 。基本上我用它来为“bio”字段提供一个很好的布局,以防用户按下回车键。

问题是它在我的数据库中存储了确切的换行标记<br>,并且当我将相同的数据从我的服务器显示到文本区域时它的作用相同。

如何防止 textarea 显示实际<br>标签这是我的示例代码

//grabbing the data in the text area field
$bio = nl2br(htmlentities(trim($_POST['bio'])));

//displaying the value from the database
$row = mysql_fetch_array($my_select_query);
<textarea><?php echo $row['bio']?; ></textarea>

我在我的 textarea 中得到了一些看起来像这样的东西 测试区域结果

我怎样才能避免这种情况?

4

3 回答 3

5

在将其存储到数据库之前,您不应该nl2br(),甚至不应该输入。htmlentities()我倾向于保持它相当原始,这为以后改变事情提供了更多的空间。

如果这已经在生产中,您可以创建自己的br2nl()函数来反转以下效果nl2br()

function br2nl($input) {
    return preg_replace('/<br\\s*?\/??>/i', '', $input);
}
于 2013-09-15T21:25:50.857 回答
0

在页面上显示字段时使用 nl2br 函数,而不是在编辑时。通过这种方式,该字段使用嵌入的换行符存储,而不是作为 HTML 片段存储,这意味着它也可以用于其他目的。

于 2013-09-15T21:16:18.383 回答
0

不要使用nl2br在银行记录信息。

因此,当它显示时,它将尊重先前插入文本区域的换行符。

//grabbing the data in the text area field
$bio = trim($_POST['bio']);

//displaying the value from the database
$row = mysql_fetch_array($my_select_query);
<textarea><?php echo $row['bio']?; ></textarea>
于 2020-04-15T18:31:40.473 回答