我有一个带有位置搜索输入的表格。搜索输入使用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
等结尾。
答案 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,这是本机功能,您必须在接收端收集并解码这些特殊字符