nl2br
我在做我想做的事时遇到了一些麻烦。
有人可以解释为什么nl2br
不\n
将 JSON 数据更改< br />
为我的 PHP 吗?
这是代码:
$page = file_get_contents('JSON_FEED_URL');
$page2 = nl2br($page);
当我回$page2
显并查看 HTML 页面时,它会显示为一堵巨大的文本墙。
nl2br 不会替换新行,只会添加 <br> 标签。在 HTML 中,不需要删除换行符,因为它们被认为是空格,它被折叠成一个空格来显示。这个事实正是拥有 <br> 标签的原因。
尝试
$page = file_get_contents('JSON_FEED_URL');
$page2 = preg_replace("/\\n/m", "<br />", $page);
如前所述,str_replace
工作速度也会快一点,但上述多行中断数。
由于您说\n
在回显时可以看到 s (而不是源代码中的换行符),这可能意味着您\n
的 s 是文字,而不是“正确的”换行符。这是因为您的 JSON 被读取为字符串。通过调用解决此问题json_decode();
$page2 = nl2br(json_decode($page));
解释:
字符串
line1
line2
在 JSON 中保存为
"line1\nline2"
但这\n
不是真正的换行符,只是普通字符。通过解码 JSON,它将是正确的。
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
在放置这些内容之前添加。