在PHP中从url字符串中删除项目

时间:2009-12-03 03:23:52

标签: php kohana

我将在这里感谢一些帮助:

我想做什么:

从以下位置删除& 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之类的函数什么都不输出

3 个答案:

答案 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;

然后使用您已编写的代码。