微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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 } ?>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐