PHP添加/修改查询字符串参数并获取URL

JM *_*ork 9 php get query-string

如何使用现有的查询字符串将用户重定向回同一页面,但是添加/修改了1个"页面".

我想1种方法是:

  1. 解析$_SERVER['QUERY_STRING']成一个数组
  2. 如果page存在于数组中,请修改该值,否则添加它
  3. 用于http_build_query获取要追加的查询字符串$_SERVER['PHP_SELF']

但是有更好/更直接的方式吗?

Jim*_*ein 23

只是为了确保您了解它,用于parse_str解析您的查询字符串:

<?php
parse_str($_SERVER['QUERY_STRING'], $query_string);
$query_string['page'] = basename($_SERVER['PHP_SELF']);
$rdr_str = http_build_query($query_string);
Run Code Online (Sandbox Code Playgroud)


rel*_*pse 5

使用Jim Rubinstein的答案,我想出了一个我认为可能会分享的有用功能:

  function modQuery($add_to, $rem_from = array(), $clear_all = false){
  if ($clear_all){
     $query_string = array();
  }else{
     parse_str($_SERVER['QUERY_STRING'], $query_string);
  }
  if (!is_array($add_to)){ $add_to = array(); }
  $query_string = array_merge($query_string, $add_to);
  if (!is_array($rem_from)){ $rem_from = array($rem_from); }
  foreach($rem_from as $key){
     unset($query_string[$key]);
  }
  return http_build_query($query_string);
  }
Run Code Online (Sandbox Code Playgroud)

例如: <a href="?<?=modQuery(array('kind'=>'feature'))?>">Feature</a>