加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

Php不添加已经存在的url参数

发布时间:2020-12-13 17:41:42 所属栏目:PHP教程 来源:网络整理
导读:在php中我添加了一个额外的URL段?按升序或降序对帖子进行排序. ?php //get current URL $url = "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; //filter URL and create sorting links if(filter_var($url,FILTER_VALIDATE_URL)) { ? a hre
在php中我添加了一个额外的URL段?按升序或降序对帖子进行排序.

<?php
    //get current URL
    $url = "http://" . $_SERVER['HTTP_HOST']  . $_SERVER['REQUEST_URI'];

    //filter URL and create sorting links
    if(filter_var($url,FILTER_VALIDATE_URL))
    { ?>         
      <a href="<?php echo $url; ?>?sort=asc">Small</a>
      <a href="<?php echo $url; ?>?sort=desc">Large</a>
    <?php } ?>

问题:每次单击链接时,URL都会重复URL段.

示例:http://mysite.com/another_segment/?sort = asc?sort = asc?sort = asc

为了禁止重复,每当我点击两个排序链接中的一个时,我如何替换URL段?我不需要用&分隔参数.符号.我期待只有一个分隔符.我在分页脚本中使用它,因此当我浏览页面时,参数需要保留在URL中.

我也试图避免使用javascript

解决方法

您应该使用以下函数删除现有URL中的“排序”键,然后追加.

function remove_querystring_var($url,$key) { 
  $url = preg_replace('/(.*)(?|&)' . $key . '=[^&]+?(&)(.*)/i','$1$2$4',$url . '&'); 
  $url = substr($url,-1); 
  return $url; 
}

您的代码应该以这种方式修改

<?php
    //get current URL
    $url = "http://" . $_SERVER['HTTP_HOST']  . $_SERVER['REQUEST_URI'];
     $url = remove_querystring_var($url,"sort");
    //filter URL and create sorting links
    if(filter_var($url,FILTER_VALIDATE_URL))
    { ?>         
      <a href="<?php echo $url; ?>?sort=asc">Small</a>
      <a href="<?php echo $url; ?>?sort=desc">Large</a>
    <?php } ?>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读