2

我正在寻找一个简单的函数,它将从 PHP 中的查询字符串中删除空白或重复的变量。以这个查询字符串为例:

?input=timeline&list=&search=&type=&count=10&keyword=hello&from=&language=en&keyword=&language=en&input=timeline

如您所见,有两个变量input=timeline和变量出现两次——一次设置一次,一次不设置languagekeyword还有很多变量是空白的listsearchtype

什么功能可以清理 URL:

?input=timeline&count=10&keyword=hello&from=&language=en

?

我找到了删除查询或某些变量的函数,但没有任何与上述内容接近的函数——我无法理解这一点。谢谢!

4

2 回答 2

4

我建议简单地利用 PHP's parse_str,但是正如您所提到的,您有多个相同的键,并且parse_str会简单地按给出的顺序覆盖它们。

这种方法将有利于非空值而不是空值,并将消除具有空值的键:

$vars = explode('&', $_SERVER['QUERY_STRING']);

$final = array();

if(!empty($vars)) {
    foreach($vars as $var) {
        $parts = explode('=', $var);

        $key = $parts[0];
        $val = $parts[1];

        if(!array_key_exists($key, $final) && !empty($val))
            $final[$key] = $val;
    }
}

如果您的查询是input=value&input=&another=&another=value&final=,它将产生这个数组:

[input] => value
[another] => value

...然后您可以使用http_build_query($final).

于 2013-07-10T12:21:08.787 回答
3

"?" . http_build_query($_GET)应该给你你想要的。由于$_GET是关联数组,因此任何重复的键都将被查询字符串中提供的最后一个值覆盖。

于 2013-07-10T11:58:01.613 回答