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!