显示包含html的json数据

时间:2015-03-04 21:25:48

标签: html json laravel laravel-5

我有以下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,我迷失了。请帮忙。

2 个答案:

答案 0 :(得分:1)

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

{!! $a->content !!}

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

但是,Laravel 5对其进行了更改,以便{{ $data }}在运行htmlent之后回显数据,新语法{!! $data !!}将按原样回显数据。

文档here

答案 1 :(得分:1)

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

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

Here's a comparison between the different echo brackets and how to change them