ホームページ >バックエンド開発 >PHPチュートリアル >PHPで同じ名前の複数のURLパラメータを取得する方法は?

PHPで同じ名前の複数のURLパラメータを取得する方法は?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-04 07:39:12252ブラウズ

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

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

URL には同じ名前の複数のパラメータが含まれることがよくあります。たとえば、OpenURL リゾルバーは、複数の「rft_id」パラメーターを持つ URL に遭遇する可能性があります。ただし、PHP の $_GET は各パラメータの最後の値のみを取得します。

これに対処するには、次のコード スニペットを利用できます:

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

foreach( $query as $param )
{
  // Prevent notice on explode() for missing '='
  if (strpos($param, '=') === false) $param += '=';

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

このコードは、各キーが含まれる配列を生成します。はパラメータ名であり、対応する値はそのパラメータに関連付けられたすべての値の配列です。

提供された OpenURL例:

// Sample URL
$url = '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';

$query  = explode('&', $url);
$params = array();

foreach( $query as $param )
{
  if (strpos($param, '=') === false) $param += '=';

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

var_dump($params);

出力:

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

このソリューションは、PHP URL で同じ名前の複数のパラメーターを処理する簡単な方法を提供します。

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

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