PHP 检查 URL 是否包含查询字符串

问题描述 投票:0回答:5

这是一个简单的问题。似乎有很多解决方案可以确定 URL 是否包含特定的键或值,但奇怪的是我找不到确定 URL 是否有查询的解决方案。

使用 PHP,我只想检查当前 URL 是否有查询字符串。例如: http://abc.com/xyz/?key=value VS。 http://abc.com/xyz/

php
5个回答
54
投票

对于任何字符串形式的 URL:

if (parse_url($url, PHP_URL_QUERY))

http://php.net/parse_url

如果是针对当前请求的URL,只需:

if ($_GET)

15
投票

最简单的方法可能是检查

$_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);
}

4
投票
在大多数情况下,

parse_url
似乎是合乎逻辑的选择。但是我想不出“?”的情况。 URL 中不会表示查询字符串的开头,因此对于(非常小的)性能提升,您可以使用

return strpos($url, '?') !== false;

超过 1,000,000 次迭代,strpos 的平均时间约为 1.6 秒,而 parse_url 的平均时间为 1.8 秒。话虽这么说,除非您的应用程序正在检查数百万个 URL 中的查询字符串,否则我会选择

parse_url


3
投票

像这样:

if (isset($_SERVER['QUERY_STRING'])) {

}

0
投票

如果您只想检查它是否根本没有任何参数,也可以使用

if (!$_GET)

© www.soinside.com 2019 - 2024. All rights reserved.