显示包含 html 的 json 数据

display json data that contains html

我有以下json

[{
  "date": "2011",
  "content": "<p>Hello world?</p>"
},
{
  "date": "2012",
  "content": "<p><strong>Hello again</strong></p>"
}]

我的控制器有

public function index() {
  $data['json'] = json_decode(file_get_contents('location_of_json_file.json'));
  return view('index', $data);
}

我的观点有

@foreach ($json as $a)
  {{ $a->content }}
@endforeach

但我得到的是

&lt;p&gt;Hello world?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hello again&lt;/strong&gt;&lt;/p&gt;

如何让它解析 html 代码而不是显示语法?我试过 htmlentitieshtml_entity_decode。我试图在代码的不同位置 json_encode,我迷路了。请帮助。

Blade 输出标签在 Laravel 4 和 Laravel 5 之间发生了变化。您正在寻找:

{!! $a->content !!}

在 Laravel 4 中,{{ $data }} 会按原样回显数据,而 {{{ $data }}} 会在 运行 之后通过 htmlentities 回显数据。

但是,Laravel 5 已将其更改为 {{ $data }} 将通过 htmlentities 在 运行 之后回显数据,而新语法 {!! $data !!} 将按原样回显数据。

文档 here.

在 Laravel 5 中,默认情况下 {{ ... }} 将使用 htmlentities 转义输出。要输出得到解释的原始 HTML 使用 {!! ... !!}:

@foreach ($json as $a)
    {!! $a->content !!}
@endforeach