Roh*_*han 11 php laravel laravel-5
我正在挖掘laravel,然后我了解了如何解释刀片视图以及我遇到的是:
这个:
{{ $tenant->name }}
Run Code Online (Sandbox Code Playgroud)
翻译为:
<?php echo e($tenant->name); ?>
Run Code Online (Sandbox Code Playgroud)
我不明白这个e()方法的用途是什么?我也无法在php.net上找到它,所以我猜它是laravel 5本身的一部分.但是它做了什么?
Gla*_*elp 18
来自文档:
E()
e函数在给定字符串上运行htmlentities:
echo e('<html>foo</html>');
// <html>foo</html>
Run Code Online (Sandbox Code Playgroud)
http://laravel.com/docs/5.1/helpers#method-e
假设您要在网页上打印数据库中的一些数据,或者将作为输入放入数据库,例如,
{{ $tenant->name }}
Run Code Online (Sandbox Code Playgroud)
并认为 value of$tenant->name是这样的
<script>
alert("Errors....");
</script>
Run Code Online (Sandbox Code Playgroud)
在浏览器中渲染后,您将获得一个alert. 这是一个安全问题,因此我们需要避免呈现这些内容,并且我们不需要在数据库中使用这些类型的数据。
所以我们需要清理这些数据
为此,laravel 提供了一些选项
HTML::entities($tenant->name);
和e()是和辅助函数HTML::entities
你可以通过使用获得相同的行为
e($tenant->name);
如果$tenant->name是<script>alert("Errors....");</script>那么在申请之后e()你会得到下面的东西,
"<script>
alert("Errors....");
</script>"
这不再作为脚本处理
这是一个很好的食谱
或者有一种简单的方法可以做到这一点
使用三重花括号{{{ }}}代替双大括号,{{ }}这也将清理内容。