tags:

views:

72

answers:

3

Hi guys! I would appreciate some help here:

What I want to do:

remove &itemsperpage=10 from:

http://localhost/thi/search/filter.html?type=featured&page=2&itemsperpage=10

and create a link from it:

http://localhost/thi/search/filter.html?type=featured&page=2&itemsperpage=15

here's what I have come up with so far:

<a href="<?php echo url::site(url::current()) . http_build_query($_GET) // don't know what follows ?>"

the framework functions I'm using are:

url::current() = returns current url in controller/action format

url::site() = returns absolute url i.e http://localhost/site/controller/action

so I have to remove '&itemsperpage' from the resulting string in the http_build_query function

but I am having trouble with character encodings and such! please help!

so here's the problem with character encoding:

$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 ';'

I can't remove the string '&itemsperpage' from the result of http_build_query which is: 'type=featured&page=2&itemsperpage=10' and functions like strstr outputs nothing

+3  A: 

I would just do this:

$array = $_GET;
$array['itemsperpage'] = 15;

Then just use your code, but with the new variable (and the ?):

<a href="<?php echo url::site(url::current()) . '?' . http_build_query($array)">
Doug Neiner
+1  A: 

The HttpQueryString class has several methods for getting, setting, modifying query strings and 'translating' their charsets.

pavium
+1  A: 

You can achieve the effect you're looking for by removing the itemsperpage element from the $_GET array before building the query string.

unset($_GET['itemsperpage']);

And then just use the code you already wrote:

<a href="<?php echo url::site(url::current()) . http_build_query($_GET); ?>">

EDIT: I misread your post. I thought you only wanted to remove the field / value pair from the GET request. All you have to do is overwrite the value with the value you want:

$_GET['itemsperpage'] = 15;

And then use the code you already wrote.

Dolph