Pergunta

Gostaria muito de receber alguma ajuda aqui:

O que eu quero fazer:

Remover & itemsPerPage = 10 a partir de:

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

e criar um link a partir dele:

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

aqui está o que eu vim acima com a medida:

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

as funções de enquadramento que estou usando são:

url :: atuais () = retorna URL atual no controlador / formato de acção

url :: local () = retorno absoluto url ou seja http: // localhost / site / controller / action

então eu tenho que remover 'e itemsPerPage' da cadeia resultante na função http_build_query

mas eu estou tendo problemas com a codificação de caracteres e tal! Por favor, ajude!

então aqui está o problema com a codificação de caracteres:

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

Eu não posso remover a string '& itemsPerPage' a partir do resultado de http_build_query que é: 'Type = featured & page = 2 & itemsPerPage = 10' e funções como strstr saídas nada

Foi útil?

Solução

Gostaria apenas de fazer isso:

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

Em seguida, basta usar o seu código, mas com a nova variável (eo ?):

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

Outras dicas

O HttpQueryString classe tem vários métodos para obter, configuração, modificar seqüências de consulta e 'traduzir' os seus conjuntos de caracteres.

Você pode obter o efeito que você está procurando, removendo o elemento itemsperpage da matriz $_GET antes de construir a string de consulta.

unset($_GET['itemsperpage']);

E, em seguida, basta usar o código que você já escreveu:

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

EDIT: Eu descaracterizou o seu post. Eu pensei que você só queria remover o par de campo / valor do pedido GET. Tudo que você tem a fazer é substituir o valor com o valor que você deseja:

$_GET['itemsperpage'] = 15;

E, em seguida, utilizar o código que você já escreveu.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top