我有一个字符串返回到我的一个视图,像这样:

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

我试图用Blade显示它:

{{$text}}

但是,输出是一个原始字符串,而不是呈现的HTML。我如何显示HTML与刀片在Laravel?

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


当前回答

在控制器。

$your_variable = '';
$your_variable .= '<p>Hello world</p>';

return view('viewname')->with('your_variable', $your_variable)

如果你不希望你的数据被转义,你可以使用下面的语法:

{!! $your_variable !!}

输出

Hello world

其他回答

我去过那里,那是我的错。非常愚蠢的一个。

如果您忘记了文件名中的.blade扩展名,则该文件不理解blade,而是运行PHP代码。你应该使用

/resources/views/filename.blade.php

而不是

/resources/views/filename.php

希望这能帮助到一些人

如果你有时使用Bootstrap折叠类{!!美元的文本! !} 不是为我工作,但{{html_entity_decode($text)}}是为我工作。

试试这个。这对我很管用。

{{ html_entity_decode($text) }}

在Laravel Blade模板中,{{}}将转义html。如果你想在视图中显示来自控制器的html, decode html from string。

默认情况下,Blade{{}}语句通过PHP的htmlspecialchars函数自动发送,以防止XSS攻击。如果你不希望你的数据被转义,你可以使用下面的语法:

根据文档,你必须做以下事情来在你的Blade文件中渲染你的html:

{!! $text !!}

在回显应用程序用户提供的内容时要非常小心。在显示用户提供的数据时,通常应该使用转义的双花括号语法来防止XSS攻击。

对于谁使用tinymce和文本区域内的标记:

{{ htmlspecialchars($text) }}