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

传递不断变化的查询字符串PHP

发布时间:2020-12-13 21:59:58 所属栏目:PHP教程 来源:网络整理
导读:我的页面上有一个文章列表,我希望能够通过将$_GET值附加到URL来应用无数种类和过滤器: http://www.example.com/blogs.php?sort=newestpopularity=highlength=200 如果我在我的页面上有链接将这些值附加到网址…他们需要足够聪明,以便考虑应用的任何先前的排
我的页面上有一个文章列表,我希望能够通过将$_GET值附加到URL来应用无数种类和过滤器:

http://www.example.com/blogs.php?sort=newest&popularity=high&length=200

如果我在我的页面上有链接将这些值附加到网址…他们需要足够聪明,以便考虑应用的任何先前的排序/过滤器.

例1:

如果我现在有……
http://www.example.com/blogs.php?sort=newest

然后我想附加一个人气=高的额外过滤器,我需要这个:

http://www.example.com/blogs.php?sort=newest&popularity=high

而不是这个:

http://www.example.com/blogs.php?popularity=high

例2:

如果我有…
http://www.example.com/blogs.php?popularity=high

我试图改变我的人气过滤器,我不想要:

http://www.example.com/blogs.php?popularity=high&popularity=low

所以简单地添加到查询字符串将不会飞.

因此,构建我的过滤器链接以便他们“记住”旧过滤器的可扩展方法是什么,但是在需要时仍会覆盖自己的过滤器值?

解决方法

您可以将过滤器存储在关联数组中:

$myFilters = array(
                      "popularity" => "low","sort" => "newest"
);

将过滤器存储在关联数组中可确保每个过滤器只有1个值.然后你可以使用http_build_query来构建你的查询字符串:

$myURL = 'http://www.example.com/test.php?' . http_build_query($myFilters);

这将产生以下URL:

http://www.example.com/test.php?popularity=low&sort=newest

编辑:哦,如果查询字符串中的过滤器顺序很重要,您可以在构建URL之前对关联数组进行排序:

asort($myFilters);
$myURL = 'http://www.example.com/test.php?' . http_build_query($myFilters);

(编辑:李大同)

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

    推荐文章
      热点阅读