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

标签 php url get query-string

我的页面上有一个文章列表,我希望能够通过将 $_GET 值附加到 URL 来对其应用无数种类和过滤器:

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

如果我的页面上有将这些值附加到 url 的链接...它们需要足够智能以说明之前应用的任何排序/过滤器。

示例 1:

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

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

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);

关于php - 传递不断变化的查询字符串 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1499328/

相关文章:

php - QueryException SQLSTATE[HY000] [2002] 无法连接到 MySQL 服务器

javascript - 将 Javascript 弹出 HTML 链接分配给 PHP 变量

c# - 使用 http :\\URL 的 WPF 图像 UriSource 和数据绑定(bind)

PHP MySQL - URL 结构

node.js - <a>标签和get请求的区别

php - 如何操作字符串以便在数学表达式中显式显示隐式乘法?

python - Django 子 url 不显示其模板

javascript - HTTP header 在 $.AJAX 调用中不起作用

php - 我找到了一个 $_GET ['var' ] == 一个 SQL 语句 - 有什么风险?

php - 分组列出结果