【问题标题】:PHP add/modify a query string param & get the URLPHP 添加/修改查询字符串参数并获取 URL
【发布时间】:2011-05-05 04:55:41
【问题描述】:

如何将用户重定向回具有现有查询字符串的同一页面,但添加/修改了 1 个,如“页面”。

我想一种方法是:

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

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

【问题讨论】:

    标签: php get query-string


    【解决方案1】:

    为了确保您了解它,请使用parse_str 解析您的查询字符串:

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

    【讨论】:

    • 哦,我正在看,但错过了我可以传递数组的部分
    • 当然让事情变得更容易!
    • 注意:http_build_query 需要 PECL 库 pecl_http >= 0.21.0。
    【解决方案2】:

    使用 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);
      }
    

    例如: &lt;a href="?&lt;?=modQuery(array('kind'=&gt;'feature'))?&gt;"&gt;Feature&lt;/a&gt;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-12
      • 2023-03-17
      • 1970-01-01
      • 2017-07-20
      相关资源
      最近更新 更多