是否有任何技巧,以避免在查询字符串中urlencode url

时间:2012-07-07 19:40:51

标签: php query-string urlencode

我正在尝试将一个脚本放在一起,以便客户端需要能够接受查询字符串中的Web地址而不首先进行urlencoded。一个例子是这样的:

http://foo.com/script.php?url=www.amazon.co.uk/ESET-Smart-Security-User-Year/dp/B005NPFOBM/ref=sr_1_1?s=software&ie=UTF8&qid=1341685530&sr=1-1

然而,当我回显$ _GET ['url']的内容时,它给了我以下内容:

www.amazon.co.uk/ESET-Smart-Security-User-Year/dp/B005NPFOBM/ref=sr_1_1?s=software

所以基本上它似乎在第一个&符号上窒息 - 我猜是因为它认为它是另一个变量。

除了形式urlencoding,是否有任何技巧让这个工作?我可能会从表单中发布它,但这会破坏脚本的想法。

2 个答案:

答案 0 :(得分:1)

对于此特定用例,您应该使用$_SERVER['QUERY_STRING']。这将一次性为您提供完整的查询字符串,然后您可以自己拆分。

在你的例子中,PHP假设&是下一个GET变量的分隔符。

答案 1 :(得分:0)

您可以询问查询参数,并将其添加到您收到的网址中。按正确的顺序列出$ _GET中的剩余参数,并添加它们添加$ _GET ['url']的结尾。

$_GET['url']
 + '&ie=' + $_GET['ie']
 + '&qid=' + $_GET['qid']
 + '&sr=' + $_GET['sr']

请注意,有一天你可能会获得额外的参数url。 http://foo.com/script.php?url=www.amazon.co.uk/ESET-Smart-Security-User-Year/dp/B005NPFOBM/ref=sr_1_1?s=software&ie=UTF8&qid=1341685530&sr=1-1&url=http://someAmazoneStuff