PHP - 获取 URL 中 $_GET 参数字符串的最简单方法

15

我想在保留参数的情况下从一个页面重定向到另一个页面。

例如,如果我有一个带有参数 param1=1&param2=2 的页面 page.php,最简单的方法是提取 "param1=1&param2=2" 是什么?

4个回答

43

使用$_SERVER['QUERY_STRING']访问问号后面的所有内容。

因此,如果您有以下URL:

http://www.sample.com/page.php?param1=1&param2=2

然后是这个:

$url = "http://www.sample.com/page2.php?".$_SERVER['QUERY_STRING'];
echo $url;

将返回:

http://www.sample.com/page2.php?param1=1&param2=2

9
除了Robs的回答外:
您可以使用http_build_query和$_GET。
这是内置的,可以处理数组。
此外,您可以轻松地通过这种方式操作GET参数,然后再将它们组合在一起。
unset($_GET['unsetthis']);
$query = http_build_query($_GET);

7

$_SERVER['QUERY_STRING']

Source


5

i would do

$querystring = '?'
foreach($_GET as $k=>$v) {
    $querystring .= $k.'='.$v.'&';
}
$url .= substr($querystring, 0, -1);

其中$url已经包含了问号之前的所有内容。

你也可以使用$_SERVER['QUERY_STRING'],但是根据PHP手册:

$_SERVER是一个包含头部、路径和脚本位置等信息的数组。这个数组中的条目是由Web服务器创建的。*并不保证每个Web服务器都会提供它们;服务器可能省略一些,或者提供其他未在此处列出的信息。*


1
这在技术上是正确的,但是无论他使用什么Web服务器,几乎肯定都提供了 $_SERVER['QUERY_STRING']。大多数基于PHP的系统都依赖它的存在。 - Michael Mrozek
此代码不会像这样呈现数组:key[innerkey]=value。它将会得到这样的结果:key=Array - ivoba

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接