一尘不染

在分页期间保留url参数

php

分页时有什么方法可以保留我的GET参数。

我的问题是我有几个不同的网址,即

questions.php?sort=votes&author_id=1&page=3

index.php?sort=answers&style=question&page=4

我应该如何在分页类中创建指向页面上具有不同页码的页面的链接,但仍然保留网址的其他部分?


阅读 311

收藏
2020-05-29

共1个答案

一尘不染

简而言之,您只需解析URL,然后在最后添加参数,或者如果参数已经存在,则将其替换。

$parts = parse_url($url) + array('query' => array());
parse_str($parts['query'], $query);
$query['page'] = $page;
$parts['query'] = http_build_str($query);
$newUrl = http_build_url($parts);

此示例代码需要用于和的PHP
HTTP模块
。后者可以替换为第一个,如果没有安装模块,则可以使用PHP用户空间实现。http_build_urlhttp_build_strhttp_build_query

另一种选择是使用Net_URL2提供了各种URL操作接口的软件包:

$op = new Net_URL2($url);
$op->setQueryVariable('page', $page);
$newUrl = (string) $op;

它更加灵活和富有表现力。

2020-05-29