用 PHP 去掉 URL 参数

新手上路,请多包涵

我在 Powerpoint 演示文稿中有一些链接,出于某种原因,当这些链接被点击时,它会在 URL 中添加一个返回参数。好吧,那个返回参数导致我的 Joomla 站点的 MVC 模式搞砸了。

使用 PHP 去除此返回参数的有效方法是什么?

示例: http://mydomain.example/index.php?id=115&Itemid=283&return=aHR0cDovL2NvbW11bml0

原文由 tpow 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 983
2 个回答

最安全的“正确”方法是:

  1. 使用 parse_url() 将 url 解析为数组
  2. 提取查询部分,使用 parse_str() 将其分解为数组
  3. 通过 unset() 从数组中删除你想要的查询参数
  4. 使用 http_build_query() 重建原始网址

快速而肮脏的是使用字符串搜索/替换和/或正则表达式来杀死值。

原文由 Marc B 发布,翻译遵循 CC BY-SA 3.0 许可协议

要使用 PHP 脚本从 url 中删除任何参数,您需要遵循以下脚本:

  function getNewArray($array,$k){
        $dataArray = $array;
        unset($array[$k]);
        $dataArray = $array;
        return $dataArray;
    }

function getFullURL(){
        return (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
    }



     $url = getFullURL();
      $url_components = parse_url($url);

      // Use parse_str() function to parse the
      // string passed via URL
      parse_str($url_components['query'], $params);
      print_r($params);

    <ul>
    <?php foreach($params as $k=>$v){?>
    <?php

    $newArray = getNewArray($params,$k);
    $parameters  = http_build_query($newArray);
    $newURL = $_SERVER['PHP_SELF']."?".$parameters;
     ?>
    <li><?=$v;?> <a href="<?=$newURL;?>">X</a>
    <?php }?>
    </ul>

原文由 Acnosoft 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏