從 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中文網其他相關文章!