Heim >Backend-Entwicklung >PHP-Tutorial >Wie rufe ich in PHP mehrere URL-Parameter mit demselben Namen ab?

Wie rufe ich in PHP mehrere URL-Parameter mit demselben Namen ab?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-04 07:39:12385Durchsuche

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

Mehrere Parameter mit demselben Namen von einer URL in PHP abrufen

URLs enthalten oft mehrere Parameter mit demselben Namen. Beispielsweise kann ein OpenURL-Resolver auf URLs mit mehreren „rft_id“-Parametern stoßen. Allerdings ruft $_GET von PHP nur den letzten Wert für jeden Parameter ab.

Um dies zu beheben, können wir das folgende Code-Snippet verwenden:

$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);
}

Dieser Code generiert ein Array, in dem jeder Schlüssel ist ein Parametername und der entsprechende Wert ist ein Array aller mit diesem Parameter verknüpften Werte.

In der bereitgestellten OpenURL Beispiel:

// 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);

Ergebnis:

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')
)

Diese Lösung bietet eine einfache Möglichkeit, mehrere Parameter mit demselben Namen in PHP-URLs zu verarbeiten.

Das obige ist der detaillierte Inhalt vonWie rufe ich in PHP mehrere URL-Parameter mit demselben Namen ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn