首页 > 后端开发 > php教程 > 如何在 PHP 中检索多个同名 URL 参数?

如何在 PHP 中检索多个同名 URL 参数?

Patricia Arquette
发布: 2024-12-04 07:39:12
原创
315 人浏览过

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

从 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板