首页 >后端开发 >php教程 >如何在 PHP 中检索重复 URL 参数的所有值?

如何在 PHP 中检索重复 URL 参数的所有值?

Barbara Streisand
Barbara Streisand原创
2024-11-30 07:43:11550浏览

How to Retrieve All Values for Duplicate URL Parameters in PHP?

从 PHP 中的 URL 检索多个同名参数

问题:

当 URL 包含多个参数时同样的名称,PHP $_GET 变量仅返回最后一个值。这可能会出现问题,尤其是当应用程序需要访问给定键的所有值时。

解决方案:

要检索给定键的所有值,请执行以下操作可以使用代码:

$query  = explode('&', $_SERVER['QUERY_STRING']);
$params = array();

foreach( $query as $param )
{
  // prevent notice on explode() if $param has no '='
  if (strpos($param, '=') === false) $param += '=';

  list($name, $value) = explode('=', $param, 2);
  $params[urldecode($name)][] = urldecode($value);
}

此代码:

  • 爆炸查询字符串转换为单独的键值对。
  • 解码键和值名称。
  • 初始化关联数组 $params 来存储值。
  • 将值添加或附加到相应的值输入 $params array.

结果:

对提供的 URL 参数执行此代码会生成以下数组:

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn