编码$ _GET变量URL会忽略&符"&"字符

use*_*097 3 php url get

所以我试图从地址栏中获取一个看起来像这样的网址:

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

所以我也不能这样!

uzy*_*zyn 8

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作为nameGET参数$_GET['name'].

说明:

urlencode()在构造URL时没有它,PHP会将其视为2个单独的参数,由&以下各项分隔:

  1. $_GET['name']
    http://imgur.com/format.jsp?id=738ths3适合你的情况

  2. $_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)