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

Wie rufe ich in PHP mehrere Parameter mit demselben Namen aus URLs ab?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-07 00:57:11994Durchsuche

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

Mehrere Parameter mit demselben Namen aus URLs in PHP abrufen

Die superglobale Variable $_GET von PHP bietet bequemen Zugriff auf URL-Parameter, hat dies aber auch getan eine Einschränkung: Für Parameter mit demselben Namen wird nur der letzte Wert zurückgegeben. Dies kann Anwendungen behindern, die mehrere Vorkommen bestimmter Parameter in URLs verarbeiten müssen.

Betrachten Sie das Beispiel eines OpenURL-Resolvers, der möglicherweise auf URLs mit mehreren Instanzen des Parameters „rft_id“ stößt:

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

Das Abrufen beider Werte von „rft_id“ mit $_GET wäre problematisch, da nur der zweite Wert zurückgegeben würde („http://www.biodiversitylibrary.org/bibliography/4323“), wobei das erste überschrieben wird.

Um dieser Herausforderung zu begegnen, können wir einen ausgefeilteren Ansatz verwenden:

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

Dieser Code analysiert die Abfragezeichenfolge in einzelne Parameter, wobei jedes Schlüssel-Wert-Paar im $params-Array gespeichert wird. Werte für Parameter mit demselben Namen werden als Array innerhalb des $params-Arrays gespeichert.

Für die Beispiel-URL wäre das Ergebnis:

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

Mit diesem Ansatz können Sie bequem Greifen Sie auf beide Werte von „rft_id“ oder einen anderen Parameter zu, der möglicherweise mehrmals in einer URL erscheint.

Das obige ist der detaillierte Inhalt vonWie rufe ich in PHP mehrere Parameter mit demselben Namen aus URLs 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