ThinkPHP在升级到5.1.7后,在模版输出上默认使用了htmlentities函数,和之前版本中默认采用的htmlspecialchars函数有区别。
为了避免出现XSS安全问题,默认的变量输出都会使用htmlentities
方法进行转义输出。如果不想被转义,那只需要在变量后面加上raw方法即可,如:{$param|raw}
你还可以设置默认的过滤方法,在配置文件template.php中设置
'default_filter' => 'htmlspecialchars'
就会默认使用htmlspecialchars方法过滤输出。
如果你不需要转义(例如你需要输出html表格等内容),可以使用:
{$data.name|raw}
htmlentities就是将所有字符转换为HTML实体,也就是全部转义输出。而htmlspecialchars是把预定义的字符转换为HTML实体。htmlspecialchars字符包括连接符(&)、双引号(")、单引号(')、小于(<)、大于(>)。如果需要把HTML实体再转换为字符,这两个函数都提供了一个decode函数分别是html_entity_decode()、htmlspecialchars_decode(),拼写有区别,前面是拆分html和entity加下划线后追加_decode的,而后者是直接补_decode后缀的。
热门工具 换一换