【问题标题】:PHP not outputting new lines from JSON dataPHP没有从JSON数据输出新行
【发布时间】:2013-06-21 14:44:06
【问题描述】:

我得到一个包含 json 数据的提要,然后由 php (json_decode) 解码并回显到我的 html 页面。

提要包含\n 字符,但是当PHP 将它们回显时,HTML 不会将它们识别为换行符或换行符,因此HTML 文本只是作为一大块文本出现。

当 json 数据中包含 \n 时,有人可以提示我应该如何使 php 回显
或类似的东西吗?

例如,json 数据可能包含“FRIDAY THROUGH WEDNESDAY.\n\nMORE RAIN IS”,但是当生成 HTML 时,它看起来就像“FRIDAY THROUGH WEDNESDAY。MORE RAIN IS”都在同一行。

谢谢!

【问题讨论】:

标签: php html json


【解决方案1】:

试试:

echo nl2br($json_string);

【讨论】:

    【解决方案2】:

    您必须将“\n”替换为 HTML 中的等效项,即 br 标记。

    您可以通过以下方式输出您的字符串:

    echo str_replace("\n", "<br />", $yourString);
    

    【讨论】:

    • 您在编辑之前发布的解决方案有效,但我无法让它与 nl2br 一起使用。
    • 奇怪,也许是你的 PHP 版本?为了多样性,我把它恢复到原来的样子。
    • 是的,也许......你知道 nl2br 是否只在回显时有效吗?因为我有一堆不想更新的回显语句,所以我只是尝试像这样更改字符串:$page = nl2br(file_get_contents('JSON_FEED_URL'));
    • 它不仅在回显时起作用,而且不会修改您传递给它的字符串。它将返回结果字符串,因此您需要回显或保存它返回的字符串。
    • 谢谢,我在您回复显示我正在将字符串传递给 nl2br 的同一时间编辑了上面的回复。你希望它起作用吗?
    【解决方案3】:

    来自 php.net:

    http://fr2.php.net/manual/fr/function.json-decode.php#112084

    function json_decode_nice($json, $assoc = TRUE){
        $json = str_replace(array("\n","\r"),"\\n",$json);
        $json = preg_replace('/([{,]+)(\s*)([^"]+?)\s*:/','$1"$3":',$json);
        $json = preg_replace('/(,)\s*}$/','}',$json);
        return json_decode($json,$assoc);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多