【问题标题】:json decode remove the new linejson decode 删除新行
【发布时间】:2015-09-12 23:07:33
【问题描述】:

找到我的 Json 代码。

$result  =  { 
        "text_1": 
            [
                { 
                    "text": "Name \nKarSho", 
                    "left": 0, 
                    "right": 0
                }
            ]
    }

我想要 PHP 中这个 Json 的“文本”。我使用了以下脚本,

$json = json_decode($result,true);
if($json && isset($json['text_1']))
{
    $textblock =$json['text_1'][0];
    echo $textblock['text'];
}

这是给予,

名字KarSho

但我想要,

名称\nKarSho

怎么办?

【问题讨论】:

  • 你需要显示这样的名字 KarSho

标签: php json decode


【解决方案1】:

好吧,令您惊讶的是,它会给您Name \nKarSho 作为输出,但是当您在 HTML(在任何浏览器中)呈现它时,您将看不到新行,因为不止一个空格和新行被浏览器忽略,如果你去查看浏览器的源代码,你会在那里看到一个新行,

如果您希望 HTML 显示新行,请使用

echo nl2br($textblock['text']);

这样您的新行将被转换为<br> 标记,您将在 HTML 输出中看到它。


编辑:

如果您还想在输出中看到\n(原样),您只需要

echo json_encode($textblock['text']);

并删除引号,

echo trim(json_encode($textblock['text']), '"');

【讨论】:

  • 我已经在答案的第一行指定了,OP 已经得到了他想要的。
  • @Muhammet 你的逻辑是对的,但对我来说已经足够了。
  • echo json_encode("test \n test"); 将打印test \/n test
  • 你能告诉我你看到了什么here 吗?
【解决方案2】:
<?php  
header('Content-Type: text/plain'); 
$result  = '{"text_1": [{"text": "Name \nKarSho", "left": 0,"right": 0}]}';
$json = json_decode($result,true);
if($json && isset($json['text_1']))
{
    $textblock =$json['text_1'][0];
    echo $textblock['text'];
}

    ?>

使用标题函数显示下一行

【讨论】:

    【解决方案3】:

    OP 不想换行,他还想打印\n

    你可以转义\n,例如:

    $name = "John \n Will";
    
    echo str_replace("\n", "\\n", $name);
    

    将输出:

    John \n Will
    

    【讨论】:

      猜你喜欢
      • 2017-12-25
      • 1970-01-01
      • 1970-01-01
      • 2016-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-24
      • 1970-01-01
      相关资源
      最近更新 更多