ホームページ >バックエンド開発 >PHPチュートリアル >PHP で URL から同じ名前の複数のパラメータを取得するにはどうすればよいですか?

PHP で URL から同じ名前の複数のパラメータを取得するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-07 00:57:11994ブラウズ

How to Retrieve Multiple Parameters with the Same Name from URLs in PHP?

PHP で URL から同じ名前の複数のパラメータを取得する

PHP の $_GET スーパーグローバル変数は URL パラメータへのアクセスを便利に提供しますが、制限: 同じ名前のパラメータの場合は、最後の値のみを返します。これにより、URL 内の特定のパラメータの複数の出現を処理する必要があるアプリケーションが妨げられる可能性があります。

「rft_id」パラメータの複数のインスタンスを持つ URL に遭遇する可能性がある OpenURL リゾルバの例を考えてみましょう。

ctx_ver=Z39.88-2004
&rft_id=info:oclcnum/1903126
&rft_id=http://www.biodiversitylibrary.org/bibliography/4323
&rft_val_fmt=info:ofi/fmt:kev:mtx:book
&rft.genre=book
&rft.btitle=At last: a Christmas in the West Indies. 
&rft.place=London,
&rft.pub=Macmillan and co.,
&rft.aufirst=Charles
&rft.aulast=Kingsley
&rft.au=Kingsley, Charles,
&rft.pages=1-352
&rft.tpages=352
&rft.date=1871

$_GET を使用して「rft_id」の両方の値を取得すると、2 番目の値しか返されないため、問題が発生します。 ("http://www.biodiversitylibrary.org/bibliography/4323")、最初のものを上書きします。

この課題に対処するには、より洗練されたアプローチを利用できます:

$query = explode('&', $_SERVER['QUERY_STRING']);
$params = array();

foreach ($query as $param) {
    // Handling cases where $param lacks an '='
    if (strpos($param, '=') === false) {
        $param .= '=';
    }

    list($name, $value) = explode('=', $param, 2);
    $params[urldecode($name)][] = urldecode($value);
}

このコードは、クエリ文字列を個々のパラメーターに解析し、各キーと値のペアが $params 配列に格納されます。同じ名前のパラメータの値は、$params 配列内の配列として保存されます。

URL の例の場合、結果は次のようになります。

array(
    'ctx_ver' => array('Z39.88-2004'),
    'rft_id' => array('info:oclcnum/1903126', 'http://www.biodiversitylibrary.org/bibliography/4323'),
    // ... other parameters ...
)

このアプローチを使用すると、次のことが便利です。 "rft_id" の両方の値、または URL 内に複数回出現する可能性のあるその他のパラメーターにアクセスします。

以上がPHP で URL から同じ名前の複数のパラメータを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。