Php 为查询的GET参数禁用HTML URL编码

Php 为查询的GET参数禁用HTML URL编码,php,html,url,encoding,get,Php,Html,Url,Encoding,Get,我目前正在开发一个表格布局。 这些表在PHP中使用了分页器和过滤函数 所有值都作为GET参数传输 例如,分页器将使用&limit=20&page=5。 该过滤器以AD中的表行作为输入字段构建。 我的意思是,每列都有自己的输入字段 单击submit按钮后,它将通过GET将数据传递给自身,因此下一页视图将正确查询/过滤数据 例如,如果我想过滤邮政编码,url将如下所示: &限额=20,页码=5,邮政编码=5 因为我允许像%5%这样的搜索显示所有邮政编码,其中5的结果不限于5。它将显示在该值的任何位置

我目前正在开发一个表格布局。 这些表在PHP中使用了分页器和过滤函数

所有值都作为GET参数传输

例如,分页器将使用&limit=20&page=5。 该过滤器以AD中的表行作为输入字段构建。 我的意思是,每列都有自己的输入字段

单击submit按钮后,它将通过GET将数据传递给自身,因此下一页视图将正确查询/过滤数据

例如,如果我想过滤邮政编码,url将如下所示: &限额=20,页码=5,邮政编码=5

因为我允许像%5%这样的搜索显示所有邮政编码,其中5的结果不限于5。它将显示在该值的任何位置具有5的所有数据

但是,如果我想用58筛选显示所有结果的邮政编码,我将键入%58%。不幸的是,根据URL编码,URL不会像预期的那样为&postcode=%58%。它将是&postcode=X%

问题是是否有可能在URL中输入正确的值

问题在于浏览器级别。如果我直接将URL从&postcode=X%更改为&postcode=%58%,然后按enter键,Chrome会立即将其转换为X%

也许可以通过元标记、http头或Javascript等实现

我是通过GET而不是POST来实现的,因为它显然更容易与paginator集成

对不起,我的英语不好。任何帮助都将不胜感激

非常感谢。

您应该避开“%”符号本身(即“%25”)。PHP应该足够聪明,能够自动解码

所以
&postcode=%58%
应该变成
&postcode=%2558%25
,PHP将对其进行解码,以便
$\u GET['postcode']
'%58%'
您应该转义“%”符号本身(即“%25”)。PHP应该足够聪明,能够自动解码

因此
&postcode=%58%
应该变成
&postcode=%2558%25
,PHP将对其进行解码,以便
$\u GET['postcode']
'%58%'

在将值插入参数之前,您应该先将其保存

总的来说,如果您使用的是mysql,我同意billrichards的观点。

在将值插入参数之前,您应该先修改它们


总的来说,如果您使用的是mysql,我同意billrichards的观点。

既然您提到%%搜索,我假设您使用的是mysql或其他SQL后端来查询数据。在这种情况下,我建议将查询字符串的格式保持为postcode=58&page=1,并添加一些其他参数以指示它是%wildcard%搜索还是精确匹配,如果存在通配符参数,则在执行查询时在后端添加%%

既然您提到%%搜索,我假设您正在使用MySQL或其他SQL后端查询数据。在这种情况下,我建议将查询字符串的格式保持为postcode=58&page=1,并添加一些其他参数以指示它是%wildcard%搜索还是精确匹配,如果存在通配符参数,则在执行查询时在后端添加%%

抱歉,我应该说我正在使用MySQL。太好了,我现在就是这么做的。谢谢你的回复!很高兴它起作用了!我把这条评论移到了回答中。对不起,我应该说我在使用MySQL。太好了,我现在就是这么做的。谢谢你的回复!很高兴它起作用了!我把评论移到了回答处。谢谢你的回复,这是个好建议。不过,我使用上述解决方案作为对billrichards问题的评论。感谢您的回复,这是一个很好的建议。不过,我使用上述解决方案作为对billrichards问题的评论。感谢您的回复,这是一个很好的建议。然而,我使用上述解决方案作为对billrichardsThanks问题的评论,这是一个很好的建议。然而,我使用上述解决方案作为对Billrichards问题的评论,这是我遵循的解决方案。然而,其他答案也可能提供一个正确的解决方法。这就是我一直遵循的解决方法。然而,其他答案也可能提供一个正确的解决方法。