我在让nl2br
做我想做的事情时遇到了一些麻烦。
有人可以解释为什么nl2br
不会将我的PHP中的JSON数据中的\n
更改为< br />
吗?
以下是代码:
$page = file_get_contents('JSON_FEED_URL');
$page2 = nl2br($page);
当我回显$page2
并查看HTML页面时,它就会成为一面大文字。
答案 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
之前添加这些内容。