la eliminación de elementos de cadenas URL en PHP
Pregunta
Le agradecería un poco de ayuda aquí:
Lo que quiero hacer:
eliminar y itemsPerPage = 10 a partir de:
http: //localhost/thi/search/filter.html ? type = ofrecido & page = 2 & itemsPerPage = 10
y crear un vínculo de ella:
http: //localhost/thi/search/filter.html ? type = ofrecido & page = 2 & itemsPerPage = 15
esto es lo que he encontrado hasta el momento:
<a href="<?php echo url::site(url::current()) . http_build_query($_GET) // don't know what follows ?>"
marco de las funciones que estoy usando son:
url :: current () = devuelve url actual en formato de controlador / acción
url :: sitio (=) devuelve URL absoluta es decir http: // localhost / site / controlador / acción
así que tengo que quitar 'y itemsPerPage' de la cadena resultante en la función http_build_query
pero estoy teniendo problemas con la codificación de caracteres y tal! por favor ayuda!
así que aquí está el problema con la codificación 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 ';'
No puedo quitar la cadena 'y itemsPerPage' a partir del resultado de http_build_query que es: 'Type = ofrecido & page = 2 & itemsPerPage = 10' y funciona como salidas strstr nada
Solución
Me acaba de hacer esto:
$array = $_GET;
$array['itemsperpage'] = 15;
A continuación, sólo tiene que utilizar su código, pero con la nueva variable (y el ?
):
<a href="<?php echo url::site(url::current()) . '?' . http_build_query($array)">
Otros consejos
El HttpQueryString clase tiene varios métodos para obtener, configurar, la modificación de las cadenas de consulta y 'traducir' sus conjuntos de caracteres.
Puede conseguir el efecto que busca la eliminación del elemento de la matriz itemsperpage
$_GET
antes de construir la cadena de consulta.
unset($_GET['itemsperpage']);
Y a continuación, sólo tiene que utilizar el código ya escrito:
<a href="<?php echo url::site(url::current()) . http_build_query($_GET); ?>">
EDIT: He leído mal su puesto. Pensé que sólo quería quitar el par de campo / valor a partir de la solicitud GET. Todo lo que tiene que hacer es sobrescribir el valor con el valor que desee:
$_GET['itemsperpage'] = 15;
Y a continuación, utilizar el código ya escrito.