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

时间:2011-10-23 03:52:27

标签: php

这很简单。似乎有很多解决方案来确定URL是否包含特定的键或值,但奇怪的是我无法找到确定URL是否完成查询的解决方案。

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

4 个答案:

答案 0 :(得分:36)

对于任何URL作为字符串:

if (parse_url($url, PHP_URL_QUERY))

http://php.net/parse_url

如果是当前请求的网址,只需:

if ($_GET)

答案 1 :(得分:9)

最简单的方法可能是查看$_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);
}

答案 2 :(得分:1)

像这样:

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

}

答案 3 :(得分:1)

在大多数情况下,

parse_url似乎是合乎逻辑的选择。但是,我无法想到一个'?'在URL中不会表示查询字符串的开头,因此对于(非常小的)性能增加,您可以使用

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

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