ホームページ >バックエンド開発 >PHPチュートリアル >PHP で URL から同じ名前の複数のパラメータを取得するにはどうすればよいですか?
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 サイトの他の関連記事を参照してください。