3

我知道这种方法:

stackoverflow.com/?id=stack

<?php 
   echo $_GET['id'];
   //output: stack
?>

但我想知道如果 url 是这样的,如何获取 $_GET 请求:

stackoverflow.com/?stack

<?php 
   echo ???
   //output: stack
?>

请注意,之后的内容/?是动态更改的。

4

8 回答 8

3

您可以使用以下命令获取整个查询字符串(未解析)$_SERVER['QUERY_STRING']

于 2012-04-18T17:16:02.043 回答
2

您可以像这样检索 $_GET 的所有值:

<?php
foreach($_GET as $key => $value){
 // $key = 'stack';
 // $value = '';
}

但是,您应该知道在您的应用程序中可能有哪些值,并为它们进行适当的编码。

于 2012-04-18T17:15:25.070 回答
2
<?php
$key = 'stack';
echo array_key_exists( $key, $_GET ) ? $key : NULL;
?>

我刚刚注意到你的评论:

注意/之后的内容?是动态变化的。

如果您只想对查询字符串中出现的任何内容进行动态处理,那么有关循环$_GET或访问的其他答案$_SERVER[ 'QUERY_STRING' ]可能更适合您(实际上取决于您在做什么)。这种情况的另一种可能性是array_keys( $_GET )

于 2012-04-18T17:16:09.613 回答
2

您可以使用$_SERVER获取有关 URL 的大量信息,例如

$_SERVER['QUERY_STRING'];
$_SERVER['REQUEST_URI'];
于 2012-04-18T17:16:16.753 回答
2

$_SERVER['QUERY_STRING']包含您要查找的值。尝试:

<?php
echo $_SERVER['QUERY_STRING'];
于 2012-04-18T17:17:11.310 回答
2

它将是具有空值的 $_GET['stack'] 。

有一个超全局 $_GET 数组。我相信在 php.net 上查看会有所帮助。

http://localhost/?stack

代码:

<?php
echo var_dump($_GET);

输出:

array(1) {
  ["stack"]=>
  string(0) ""
}
于 2012-04-18T17:18:35.410 回答
2

您可以浏览内容$_GET并查看里面的内容。在您的情况下stack,将以空字符串作为值的键。

此外,您可以使用parse_url和检查query结果中的密钥,这与$_SERVER['QUERY_STRING']其他答案中描述的使用相同。

但是,如果您描述了您要实现的目标,也许会有所帮助。

于 2012-04-18T17:21:47.953 回答
2
<?php
$d = array_keys($_GET);
echo array_shift($d);
?>
于 2012-04-18T17:25:35.360 回答