Laravel 4 如何保持用户输入的换行符,同时在blade中进行消毒?
我尝试从保存在数据库中的用户textarea输入中呈现数据 我需要使用nl2br保持换行符 并且还想通过使用blade{{}}来防止恶意脚本 但是{{{nl2br($output)}}}}不起作用,br标记也会被清理Laravel 4 如何保持用户输入的换行符,同时在blade中进行消毒?,laravel-4,Laravel 4,我尝试从保存在数据库中的用户textarea输入中呈现数据 我需要使用nl2br保持换行符 并且还想通过使用blade{{}}来防止恶意脚本 但是{{{nl2br($output)}}}}不起作用,br标记也会被清理 请给我一些提示,谢谢。对于Laravel 4用户: {{ nl2br(e($message)) }} {!! nl2br(e($message)) !!} e($x)相当于{{{{$x}}} Laravel 5用户: {{ nl2br(e($message)) }} {!!
请给我一些提示,谢谢。对于Laravel 4用户:
{{ nl2br(e($message)) }}
{!! nl2br(e($message)) !!}
e($x)
相当于{{{{$x}}}
Laravel 5用户:
{{ nl2br(e($message)) }}
{!! nl2br(e($message)) !!}
e($x)
相当于{{$x}
Sawny的答案是一个非常好的答案,它确实很好地利用了Blade语法的强大功能,不过我会更进一步。您可以使用Blade::extend
创建自己的刀片@
短代码,因此我使用以下代码:
Blade::extend(function($value, $compiler)
{
$pattern = $compiler->createMatcher('nlbr');
return preg_replace($pattern, '$1<?php echo nl2br(e($2)); ?>', $value);
});
Blade::extend(函数($value,$compiler)
{
$pattern=$compiler->createMatcher('nlbr');
返回preg_replace($pattern,$1',$value);
});
现在,在刀片模板中,您需要做的事情如下:
<div>@nlbr($sometext)</div>
@nlbr($sometext)
编辑:我意识到有人遇到这个问题时可能会想,“我应该把Blade::extend
函数放在哪里?”
老实说,它可以在很多地方使用(这取决于您是否使用Laravel4或5作为“最佳”方法)
放在
routes.php
或global.php
文件中是一个简单的地方,因为它们只需花费最少的精力就可以找到。但是,这些文件不是最好的文件,您最好学习创建Laravel提供程序。只需使用此删除br无需编写
此函数为nl2br
它很好用
{!!($mylogin->title) !!}
我不得不这样使用它{!!nl2br(e($message))