我将在这里感谢一些帮助:
我想做什么:
从以下位置删除& itemsperpage = 10:
http://localhost/thi/search/filter.html?type=featured&page=2&itemsperpage=10
并从中创建一个链接:
http://localhost/thi/search/filter.html?type=featured&page=2&itemsperpage=15
这是我到目前为止所得到的:
<a href="<?php echo url::site(url::current()) . http_build_query($_GET) // don't know what follows ?>"
我正在使用的框架功能是:
url :: current()=以控制器/动作格式返回当前网址
url :: site()=返回绝对网址,即http://localhost/site/controller/action
所以我必须从http_build_query函数中的结果字符串中删除'&amp; itemsperpage'
但是我遇到了字符编码等问题!请帮忙!
所以这是字符编码的问题:
$needle = '&itemsperpage';
$querystring = http_build_query($_GET) . '<br/>';
// echo $querystring . '<br/>';
$pos = strpos($querystring, $needle);
$remove = substr($querystring, ((int)$pos));
echo substr(str_replace($remove, '', $querystring), 1); // returns ';'
我无法从http_build_query的结果中删除字符串'&amp; itemsperpage',它是: 'type = featured&amp; page = 2&amp; itemsperpage = 10'和strstr之类的函数什么都不输出
答案 0 :(得分:5)
我会这样做:
$array = $_GET;
$array['itemsperpage'] = 15;
然后只使用您的代码,但使用新变量(以及?
):
<a href="<?php echo url::site(url::current()) . '?' . http_build_query($array)">
答案 1 :(得分:1)
HttpQueryString类有几种获取,设置,修改查询字符串和“翻译”字符集的方法。
答案 2 :(得分:1)
在构建查询字符串之前,您可以通过从itemsperpage
数组中删除$_GET
元素来实现您正在寻找的效果。
unset($_GET['itemsperpage']);
然后只使用您已编写的代码:
<a href="<?php echo url::site(url::current()) . http_build_query($_GET); ?>">
编辑:我误读了你的帖子。我以为你只想从GET请求中删除字段/值对。您所要做的就是用您想要的值覆盖该值:
$_GET['itemsperpage'] = 15;
然后使用您已编写的代码。