用PHP写后台,制作layer弹出框使用get方法时,数据中的加号变为空格的问题解决办法

PHP中layer弹出框使用get方法时,数据中的加号变为空格的问题解决办法

问题描述:
如图所示:在web项目中,后台是用php写的。利用js中的layer.open做了一个弹出确认框,但是却发现前端中显示的“未分配+14”在弹出框中显示的“未分配 14”,加号在这个过程中变成了空格
用PHP写后台,制作layer弹出框使用get方法时,数据中的加号变为空格的问题解决办法
通过查阅发现,layer默认就是使用get请求,layer又没有参数可以设置调整为POST。GET传送数据时,如果数据里含有"+"(加号),但接收程序解析数据时,会把这个加号解析成空格。
首先采用的办法是使用urlencode进行编码(TP框架)
用PHP写后台,制作layer弹出框使用get方法时,数据中的加号变为空格的问题解决办法PHP代码是这样,但是这样操作后,虽然空格变成了加号,但是出现了新问题,原本的汉字乱码了

用PHP写后台,制作layer弹出框使用get方法时,数据中的加号变为空格的问题解决办法
其实不需要再次使用urlencode进行编码,php在接收到参数的时候,会自动对参数进行一次urldecode解码操作,因此,如果传送的参数未进行url编码,那特殊字符(例如+号)就会被解码为空格,导致参数接收不正确。

最终解决办法:

PHP代码:
$point_change = I('get.point','','htmlspecialchars'); $point_change = str_replace(' ', '+', $point_change);在这里插入图片描述

在php里面,只要使用**$point = str_replace(’ ', ‘+’, $point);**,将空格变为+,可以顺利解决问题。

用PHP写后台,制作layer弹出框使用get方法时,数据中的加号变为空格的问题解决办法