3

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

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

这是代码:

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

当我回$page2显并查看 HTML 页面时,它会显示为一堵巨大的文本墙。

4

4 回答 4

3

nl2br 不会替换新行,只会添加 <br> 标签。在 HTML 中,不需要删除换行符,因为它们被认为是空格,它被折叠成一个空格来显示。这个事实正是拥有 <br> 标签的原因。

于 2013-06-21T16:30:52.763 回答
3

尝试

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

如前所述,str_replace工作速度也会快一点,但上述多行中断数。

于 2013-06-21T15:55:59.850 回答
2

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

$page2 = nl2br(json_decode($page));

解释:
字符串

line1
line2

在 JSON 中保存为

"line1\nline2"

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

于 2013-06-21T16:35:47.537 回答
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在放置这些内容之前添加。

于 2013-06-21T16:20:57.083 回答