Laravel 5:用刀片显示HTML

我有一个string返回到我的意见之一,像这样:

$text = '<p><strong>Lorem</strong> ipsum dolor <img src="images/test.jpg"></p>' 

我试图用刀片显示它:

 {{$text}} 

但是,输出是一个原始string,而不是呈现的HTML。 如何在Laravel 5中显示带有刀片的HTML?

PS。 PHP echo()正确显示HTML。

你需要这样做

 {!! $text !!} 

当您执行{{}}时,string会自动转义

你可以试试这个:

 {!! $text !!} 

你应该看看: http : //laravel.com/docs/5.0/upgrade#upgrade-5.0在“ http://laravel.com/docs/5.0/upgrade#upgrade-5.0

对于laravel 5

 {!!html_entity_decode($text)!!} 

通过这个链接找出来,参见RachidLaasri的答案

尝试这个。 它为我工作。

 {{ html_entity_decode($text) }} 

在Laravel Blade模板中,{{}}将会转义html。 如果你想在控制器中显示html,请从string解码html。

请用

 {!! $test !!} 

只有在html的情况下,而如果你想渲染数据,刺等使用

 {{ $test }} 

这是因为当你的刀片文件被编译

 {{ $test }} is converted to <?php echo e($test) ?> 

 {!! $test !!} is converted to <?php echo $test ?> 

还有另一种方法。 如果对象的目的是呈现html,您可以实现具有toHtml()方法的\Illuminate\Contracts\Support\Htmlable契约。

然后你可以像这样从刀片渲染这个对象: {{ $someObject }} (注意,不需要{!! !!}语法)。

另外,如果你想返回HTML属性,你知道它将是HTML,使用\Illuminate\Support\HtmlString类是这样的:

 public function getProductDescription() { return new HtmlString($this->description); } 

然后像{{ $product->getProductDescription() }}一样使用它。

当然,直接在页面上呈现原始html负责。

如果你想逃避数据使用

 {{ $html }} 

如果不想逃避数据使用

 {!! $html !!} 

但是,直到Laravel-4你可以使用

 {{ HTML::link('/auth/logout', 'Sign Out', array('class' => 'btn btn-default btn-flat')) }} 

什么时候来到Laravel-5

 {!! HTML::link('/auth/logout', 'Sign Out', array('class' => 'btn btn-default btn-flat')) !!} 

你也可以用PHP函数做到这一点

 {{ html_entity_decode($data) }} 

通过PHP文档查看这个函数的参数

html_entity_decode – php.net

在Php Laravel在HTML页面中显示$ test数据: –

 {{ $test }} 

用不同的方式

 <? $test ?> 

$数据=用户::其中( '编号',1) – >第一();

在刀片页面中,

名称:{{$ data-> name}}