我知道这种方法:
stackoverflow.com/?id=stack
<?php
echo $_GET['id'];
//output: stack
?>
但我想知道如果 url 是这样的,如何获取 $_GET 请求:
stackoverflow.com/?stack
<?php
echo ???
//output: stack
?>
请注意,之后的内容/?
是动态更改的。
您可以使用以下命令获取整个查询字符串(未解析)$_SERVER['QUERY_STRING']
您可以像这样检索 $_GET 的所有值:
<?php
foreach($_GET as $key => $value){
// $key = 'stack';
// $value = '';
}
但是,您应该知道在您的应用程序中可能有哪些值,并为它们进行适当的编码。
<?php
$key = 'stack';
echo array_key_exists( $key, $_GET ) ? $key : NULL;
?>
我刚刚注意到你的评论:
注意/之后的内容?是动态变化的。
如果您只想对查询字符串中出现的任何内容进行动态处理,那么有关循环$_GET
或访问的其他答案$_SERVER[ 'QUERY_STRING' ]
可能更适合您(实际上取决于您在做什么)。这种情况的另一种可能性是array_keys( $_GET )
您可以使用$_SERVER获取有关 URL 的大量信息,例如
$_SERVER['QUERY_STRING'];
$_SERVER['REQUEST_URI'];
$_SERVER['QUERY_STRING']
包含您要查找的值。尝试:
<?php
echo $_SERVER['QUERY_STRING'];
它将是具有空值的 $_GET['stack'] 。
有一个超全局 $_GET 数组。我相信在 php.net 上查看会有所帮助。
代码:
<?php
echo var_dump($_GET);
输出:
array(1) {
["stack"]=>
string(0) ""
}
您可以浏览内容$_GET
并查看里面的内容。在您的情况下stack
,将以空字符串作为值的键。
此外,您可以使用parse_url
和检查query
结果中的密钥,这与$_SERVER['QUERY_STRING']
其他答案中描述的使用相同。
但是,如果您描述了您要实现的目标,也许会有所帮助。
<?php
$d = array_keys($_GET);
echo array_shift($d);
?>