laravel视图中的e()方法是什么?

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>');

// &lt;html&gt;foo&lt;/html&gt;
Run Code Online (Sandbox Code Playgroud)

http://laravel.com/docs/5.1/helpers#method-e


K.T*_*ess 6

假设您要在网页上打印数据库中的一些数据,或者将作为输入放入数据库,例如,

{{ $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()你会得到下面的东西,

"&lt;script&gt; alert(&quot;Errors....&quot;); &lt;/script&gt;"

这不再作为脚本处理

这是一个很好的食谱

或者有一种简单的方法可以做到这一点

使用三重花括号{{{ }}}代替双大括号,{{ }}这也将清理内容。