13

次のようなリクエストを受け取ったとしましょう:

http://www.example.com/index.php?id=123&version=3&id=234&version=4

私のphpコード内でこれらを簡単な方法で抽出することは可能ですか? window.location.href を使用して javascript でクエリ文字列全体を取得し、手動で処理できることに気付きましたが、もっとエレガントなものを探しています。リクエストにはバージョンと ID のペアをいくつでも含めることができますが、クエリは整形式であり、無効な文字列を処理する義務はないと想定できます。

4

5 に答える 5

27

フィールド名を変更して含めることができる場合[]、PHPは一致するすべての値を含む配列を作成します。

http://www.example.com/index.php?id[]=123&version[]=3&id[]=234&version[]=4

フィールド名を変更する機能がない場合は、あなたが言うように、クエリ文字列を自分で解析する必要があります。

于 2010-10-20T16:48:04.243 に答える
8

PHP マニュアルのこのコメントによると、PHP のクエリ文字列パーサーは重複するパラメーターを削除します...そのため、PHP はあなたがやりたいことに適しているとは思いません (javascript と同じ容量を持っていることを除いて)生のクエリ文字列を取得します。これを使用して、好きなことを行うことができます)

于 2010-10-20T16:45:05.947 に答える
1

リクエストをある程度制御できると仮定すると、名前に接尾辞を付けると[]、PHPは1つを除くすべてを削除するのではなく、配列を生成します。

http://www.example.com/index.php?id[]=123&version[]=3&id[]=234&version[]=4

それらはペアであるため、インデックスを使用して表示される順序を修正することをお勧めします。

http://www.example.com/index.php?id[0]=123&version[0]=3&id[1]=234&version[1]=4
于 2010-10-20T16:49:00.350 に答える
1

$_GET のキーと値を抽出するだけで、関数を次のように使用できます。

print_array('$_GET...',$_GET);

...関数コードは次のようになります。

function print_array($title, $arr) {
    echo '<table width="100%" style="padding:10;">';
    echo '<tr><td width="30%" style="text-align:right; background-color:bisque;">key of </td><td style="background-color:bisque;">'.$title.'</td></tr>';
    foreach($arr as $key => $value) {
        echo '<tr>';
            echo '<td style="text-align:right; color:grey;">';
                echo $key;
            echo '</td>';
            echo '<td>';
                echo $value;
            echo '</td>';
        echo '</tr>';
    }
    echo '</table>';
}
于 2014-07-28T11:46:02.787 に答える