tpthink5 php7.1,解决ThinkPHP升级5.1后输出字符被转义的问题。

最近给博客升级框架,由于从5.0过渡到5.1要修改的地方还蛮多的,加上之前一些代码在实际运行中略显低效,索性就把后端重构一下。把一些关键部位调整到位后刷新页面,发现原先用于输出备案信息的地方被转义输出成字符串了,印象中TP模版输出默认是使用htmlspecialchars函数的,既然能原样输出字符串,所以和后端改造的关联不大。

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

TP最近升级的很是生猛,只好去翻下手册了,在模版章节,使用函数部分,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字符包括连接符(&)、双引号(")、单引号(')、小于(

PS.刚刚升级PHP版本和Mysql版本,卡不出来了,就差点删库跑路了,笑~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值