如何使用nl2br删除\ n并添加中断

时间:2013-06-21 15:46:03

标签: php html json nl2br

我在让nl2br做我想做的事情时遇到了一些麻烦。

有人可以解释为什么nl2br不会将我的PHP中的JSON数据中的\n更改为< br />吗?

以下是代码:

$page = file_get_contents('JSON_FEED_URL');
$page2 = nl2br($page);

当我回显$page2并查看HTML页面时,它就会成为一面大文字。

4 个答案:

答案 0 :(得分:3)

尝试

$page = file_get_contents('JSON_FEED_URL');
$page2 = preg_replace("/\\n/m", "<br />", $page);  

如上所述,str_replace也会更快,但上面的多线中断计数。

答案 1 :(得分:1)

nl2br不会替换新行,只会广告&lt; br&gt;标签。在HTML中,不需要删除新的行字符,因为它们被认为是白色空间,它被折叠到单个空间以供显示。这个事实是获得&lt; br&gt;的原因了。标签

答案 2 :(得分:1)

由于您说在回显时可以看到\n(而不是源中的换行符),这可能意味着您的\n是文字的,而不是“正确”的换行符。这是因为您的JSON被读取为字符串。通过调用json_decode();

来解决此问题
$page2 = nl2br(json_decode($page));

说明:
字符串

line1
line2

以JSON格式保存为

"line1\nline2"

\n不是真正的换行符,只是普通字符。通过解码JSON,它是正确的。

答案 3 :(得分:0)

nl2br未在HTML中将\n解释为<br />,因为它们是字面斜杠,后跟n。

在您的来源上,文字如下所示:

 FRIDAY THROUGH WEDNESDAY.\n\nMORE RAIN IS

应该与ff类似,以便解释:

 FRIDAY THROUGH WEDNESDAY.

 MORE RAIN IS

您可以使用str_replace()来解决您的问题,或者在将内容放在“JSON_FEED_URL”上时更新您的代码,在添加nl2br之前添加这些内容。