ホームページ >バックエンド開発 >PHPチュートリアル >PHPで同じ名前の複数のURLパラメータを取得する方法は?
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 サイトの他の関連記事を参照してください。