【PHP】Laravel将HTML实体转换回普通字符
问题
最近一个laravel模板的项目需要用到summernote富文本编辑器,内容保存到数据库里是原始的html代码。再读取出来时使用htmlspecialchars_decode()对内容进行转换,但输出的结果还是html代码。如“<p>123</p>”,输出的结果应该是“123”,但是实际上转换并没有成功。在使用中表明,Laravel并不能像Thinkphp那样使用htmlspecialchars_decode()对html代码进行转换。
解决办法
查看Laravel官网的文档,发现文档的Blade模板引擎那一节有写到如何显示原生数据。文档里提到,默认情况下,Blade 的 {{ }}
语句已经通过 PHP 的 htmlentities
函数处理以避免 XSS 攻击。所以如果想显示原生数据,应该在Blade模板中这样写
Hello, {!! $name !!}.
就可以成功输出“123”了。
总结
主要问题还是看文档时没有认真看,太过于囫囵吞枣,结果浪费了自己的时间,希望自己能够引以为戒吧。
————————————————
————————————————
努力追赶上那个曾被寄予厚望的自己
————————————————