有脚本接收另一个URL作为GET参数:
script.php?file=http://www.google.com&id=123
问题是:
当url有参数本身时,它被用作脚本的参数,而不是url的参数:
script.php?file=http://www.google.com?q=adsf&lang=en&id=123
网址为http://www.google.com?q=adsf&lang=en
,但在&
之后会被切断,因为它被视为与script.php
本身相关。
我该怎么办?
我厌倦了将&
替换为%26
,但是网址会被破坏。
答案 0 :(得分:2)
您需要使用percent-encoding编码值。
如果您使用的是PHP,请使用rawurlencode
(如果需要urlencode
,则使用application/x-www-form-urlencoded):
$url = 'http://www.google.com?q=adsf&lang=en';
echo 'script.php?file='.rawurlencode($url);
答案 1 :(得分:2)
您需要将作为参数传递的整个网址URL编码到另一个网址(您的脚本)。 %26是&的正确编码。在使用之前,请确保在服务器端解码。你没有说出你正在使用的语言,但大多数情况下,javascript和php都有本机URL编码功能。
答案 2 :(得分:2)
尝试对每个特殊字符进行编码,如下所示:
script.php?file=http%3a%2f%2fwww.google.com%3fq%3dadsf%26lang%3den&id=123
尽管使用rawurlencode()
可能更好更容易。
另请阅读有关网址编码的this。