2

PHP のクエリ文字列から空白または重複した変数を削除する単純な関数を探しています。たとえば、次のクエリ文字列を使用します。

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

ご覧のとおり、2 つinput=timelineの変数languagekeyword変数が 2 回表示されます。1 回は設定され、1 回は設定されていません。また、空白の変数がたくさんあります- listsearchおよびtype.

URL をクリーンアップして作成する関数は次のとおりです。

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

?

クエリまたは特定の変数を削除する関数を見つけましたが、上記に近いものは何もありません。これについて頭を悩ませることはできません。ありがとう!

4

2 に答える 2

4

parse_str単純にPHP の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

...これを で有効な GET 文字列にすることができますhttp_build_query($final)

于 2013-07-10T12:21:08.787 に答える
3

"?" . http_build_query($_GET)あなたが望むものをあなたに与えるべきです。は連想配列であるため$_GET、重複するキーはクエリ文字列で指定された最後の値で上書きされます。

于 2013-07-10T11:58:01.613 に答える