这是一个简单的问题。似乎有很多解决方案可以确定 URL 是否包含特定的键或值,但奇怪的是我找不到确定 URL 是否有查询的解决方案。
使用 PHP,我只想检查当前 URL 是否有查询字符串。例如: http://abc.com/xyz/?key=value VS。 http://abc.com/xyz/。
对于任何字符串形式的 URL:
if (parse_url($url, PHP_URL_QUERY))
如果是针对当前请求的URL,只需:
if ($_GET)
最简单的方法可能是检查
$_GET[]
是否包含任何内容。这可以使用 empty()
函数来完成,如下所示:
if(empty($_GET)) {
//No variables are specified in the URL.
//Do stuff accordingly
echo "No variables specified in URL...";
} else {
//Variables are present. Do stuff:
echo "Hey! Here are all the variables in the URL!\n";
print_r($_GET);
}
parse_url
似乎是合乎逻辑的选择。但是我想不出“?”的情况。 URL 中不会表示查询字符串的开头,因此对于(非常小的)性能提升,您可以使用
return strpos($url, '?') !== false;
超过 1,000,000 次迭代,strpos 的平均时间约为 1.6 秒,而 parse_url 的平均时间为 1.8 秒。话虽这么说,除非您的应用程序正在检查数百万个 URL 中的查询字符串,否则我会选择
parse_url
。
像这样:
if (isset($_SERVER['QUERY_STRING'])) {
}
如果您只想检查它是否根本没有任何参数,也可以使用
if (!$_GET)
。