удаление элементов из строк URL в PHP - PullRequest
1 голос
/ 03 декабря 2009

Буду признателен за помощь:

Что я хочу сделать:

удалить & 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 в формате контроллера / действия

url :: site () = возвращает абсолютный URL, т.е. http://localhost/site/controller/action

поэтому я должен удалить '& itemsperpage' из полученной строки в функции http_build_query

но у меня проблемы с кодировкой символов и тому подобным! пожалуйста, помогите!

так вот проблема с кодировкой символов:

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

Я не могу удалить строку '& itemsperpage' из результата http_build_query, который: 'type = featured & page = 2 & itemsperpage = 10' и работает так, как strstr, ничего не выводит

Ответы [ 3 ]

5 голосов
/ 03 декабря 2009

Я бы просто сделал это:

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

Тогда просто используйте ваш код, но с новой переменной (и ?):

<a href="<?php echo url::site(url::current()) . '?' . http_build_query($array)">
1 голос
/ 03 декабря 2009

Вы можете добиться желаемого эффекта, удалив элемент itemsperpage из массива $_GET перед построением строки запроса.

unset($_GET['itemsperpage']);

А затем просто используйте код, который вы уже написали:

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

РЕДАКТИРОВАТЬ: я неправильно прочитал ваш пост. Я думал, что вы хотели удалить только пару поле / значение из запроса GET. Все, что вам нужно сделать, это перезаписать значение желаемым значением:

$_GET['itemsperpage'] = 15;

А затем используйте код, который вы уже написали.

1 голос
/ 03 декабря 2009

Класс HttpQueryString имеет несколько методов для получения, установки, изменения строк запроса и «перевода» их кодировок.

...