nl2br不适用于htmlspecialchars

时间:2016-09-09 20:55:09

标签: php

所以我试图让nl2br工作,但它不会像我希望的那样工作。

当它从数据库中检索文本时,我希望它能够识别nl2br我有htmlspecialchars的\ n,这是它不起作用的原因。我该如何解决这个问题?

我的代码: post变量看起来像这样

$post = nl2br($row['p_post']);

这意味着它最终会在htmlspecialchars() echo '<p>'.htmlspecialchars($post, ENT_QUOTES).'</p>;

我试着像echo '<p>'.nl2br(htmlspecialchars($post, ENT_QUOTES)).'</p>;这样说,但结果看起来好像根本没有nl2br

从一开始就看起来如何 How it looks

enter image description here

我已经添加了nl2br

2 个答案:

答案 0 :(得分:0)

您对代码进行了双重编码:

$foo = "how\ndoes\nthis\nlook";
$post = nl2br($foo); // $post is now "how<br>does<br>this<br>look"
$temp = nl2br(htmlspecialchars($post)); // $temp is now "how&lt;br&gt;does etc..."
echo '<p>how&lt;br&gt;does&lt; etc...';

您将换行符转换为break标记,然后html将break标记编码为html字符实体,因此您的浏览器会将这些标记呈现为“可视”标记,而不是HTML换行符。

答案 1 :(得分:0)

这是固定的,似乎另一个变量以某种方式与它相撞,因此它实际上不会生成<br>标签。