在$ _GET查询网址中使用'+'代替%2C'

时间:2018-10-21 19:32:42

标签: javascript php

我有一个带有位置搜索输入的表格。搜索输入使用Google Places自动完成功能。我正在将搜索输入的值传递给名为“查询”的隐藏字段。提交表单后,会将隐藏字段的值作为查询字符串附加到URL:

<input id="foo" type="text" name="search" placeholder="Search...">
<input id="bar" type="hidden" name="query" value="">

在上面的示例中,URL如下所示:

http://example.com/?query=ExampleC%2Blocation%2C%2BUS

此查询字符串仅用于分析分析。有没有一种使用加号以更易于理解的方式设置URL格式的方法?因此,例如:

http://example.com/?query=Example+location,+us

在我的Javascript文件中,我尝试了以下操作:

document.getElementById("bar").value = usersearch.split(' ').join('+');

在我的PHP中,我为已经执行的搜索添加了以下内容:

<input id="bar" type="hidden" name="query" value="<?php echo urlencode($_GET['query']) ?>">

似乎都不起作用。该网址仍以%2B等结尾。

2 个答案:

答案 0 :(得分:0)

JavaScript:urldecode

const someEncodedUri = 'http://example.com/?query=ExampleC%2Blocation%2C%2BUS';
console.log(decodeURIComponent(someEncodedUri)); // http://example.com/?query=Example+location,+us

PHP:https://hub.docker.com/r/multiarch/qemu-user-static/

$someEncodedUri = 'http://example.com/?query=ExampleC%2Blocation%2C%2BUS';
echo urldecode($someEncodedUri));

请注意,如果您实际上是在访问URL,则需要以编码方式对其进行编码以避免出现问题,然后只需在服务器上对其进行解码以进行分析即可。

答案 1 :(得分:0)

出于安全原因,默认情况下,浏览器将为特殊字符编码URL,这是本机功能,您必须在接收端收集并解码这些特殊字符