thinkphp5.1解决显示字符被转义的事情

原创
小哥 3年前 (2022-11-21) 阅读数 8 #大杂烩

使用raw方法不进行转义输出

TP给了这样一个说法:为了避免出现XSS安全问题,默认的变量输出都会使用 htmlentities 方法进行转义输出。如果不想被转义,那只需要在变量后面加上raw方法即可,如:{$anji|raw}

除了raw方法,TP还给了一个配置方法,在template.php配置中添加一项default_filter => htmlspecialchars,这样也可以将htmlentities 换成 htmlspecialchars过滤。

使用htmlspecialchars_decode把预定义的实体转为字符

上述使用raw方法输出后的内容,由于写入的关系,有可能不转义输出的结果是变成了预定义的实体字符,如果要继续达到被html解析的普通字符效果,还需要在将实体字符转换成普通字符,前述我们在配置文件中定义得利htmlspecialchars过滤,那么就需要使用htmlspecialchars_decode函数进行转换。如{$anji|raw|htmlspecialchars_decode}

htmlentities()和htmlspecialchars()的区别:

一直用htmlspecialchars函数,htmlentities用的少,htmlentities就是将所有字符转换为HTML实体,也就是全部转义输出。而htmlspecialchars是把预定义的字符转换为HTML实体。htmlspecialchars字符包括连接符(&)、双引号(")、单引号()、小于(<)等等

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除