所以我试图从地址栏中获取一个看起来像这样的网址:
http://mysite.com/url.php?name=http://test.com/format.jsp?id=738ths3&secure=false
Run Code Online (Sandbox Code Playgroud)
我正在使用$ _GET变量来读取它我的代码如下所示的URL
$arc = rawurlencode($_GET['name']);
echo "URL: $arc";
Run Code Online (Sandbox Code Playgroud)
这只会返回
URL: http://imgur.com/format.jsp?id=738ths3
Run Code Online (Sandbox Code Playgroud)
它缺少&secure = false
我想要它看起来:
URL: http://test.com/format.jsp?id=738ths3&secure=false
Run Code Online (Sandbox Code Playgroud)
我已经尝试过urlencode,rawurlencode无济于事,我已经在google上查了一些论坛和stackoverflow没有答案的帮助,任何想法?谢谢!
urlencode显示了这个:
网址:http%3A%2F%2Ftest.com
所以我也不能这样!
urlencode()
在构造URL之前,您需要:
$url = "http://mysite.com/url.php?name=".urlencode('http://test.com/format.jsp?id=738ths3&secure=false');
Run Code Online (Sandbox Code Playgroud)
这样,您就可以从中获取完整的URL作为name
GET参数$_GET['name']
.
urlencode()
在构造URL时没有它,PHP会将其视为2个单独的参数,由&
以下各项分隔:
$_GET['name']
这http://imgur.com/format.jsp?id=738ths3
适合你的情况
$_GET['secure']
这false
适合你的情况
从您的评论中,您似乎无法控制URL构造.您可以$_GET
使用http_build_query
以下单字符串获取完整字符串:
$name = http_build_query($_GET);
Run Code Online (Sandbox Code Playgroud)
然后你会获得:
echo $name; // name=http://test.com/format.jsp?id=738ths3&secure=false
// which you would then may want to strip away the first 'name='
$name = substr($name, strlen('name='));
echo $name; // to obtain http://test.com/format.jsp?id=738ths3&secure=false
Run Code Online (Sandbox Code Playgroud)