la rimozione di elementi da stringhe URL in PHP
Domanda
Gradirei un certo aiuto qui:
Quello che voglio fare:
& rimuovere ItemsPerPage = 10 da:
http: //localhost/thi/search/filter.html ? type = optional & page = 2 & ItemsPerPage = 10
e creare un collegamento da esso:
http: //localhost/thi/search/filter.html ? type = optional & page = 2 & ItemsPerPage = 15
ecco quello che sono venuto in mente finora:
<a href="<?php echo url::site(url::current()) . http_build_query($_GET) // don't know what follows ?>"
le funzioni di quadro che sto usando sono:
url :: corrente () = restituisce URL corrente nel controller di formato / azione
URL :: sito () = restituisce URL assoluto cioè http: // localhost / sito / regolatore / azione
così devo togliere '& ItemsPerPage' dalla stringa risultante nella funzione http_build_query
, ma sto avendo problemi con la codifica dei caratteri e così via! per favore aiutatemi!
ecco il problema con codifica dei caratteri:
$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 ';'
Non riesco a rimuovere la stringa '& ItemsPerPage' dal risultato di http_build_query che è: 'Type = optional & page = 2 & ItemsPerPage = 10' e funzioni come uscite strstr niente
Soluzione
Vorrei solo fare questo:
$array = $_GET;
$array['itemsperpage'] = 15;
Poi basta utilizzare il codice, ma con la nuova variabile (e la ?
):
<a href="<?php echo url::site(url::current()) . '?' . http_build_query($array)">
Altri suggerimenti
Il HttpQueryString classe ha diversi metodi per ottenere, l'impostazione, modificare stringhe di query e 'tradurre' i loro set di caratteri.
È possibile ottenere l'effetto che stai cercando, eliminando l'elemento itemsperpage
dalla matrice $_GET
prima di costruire la stringa di query.
unset($_GET['itemsperpage']);
E poi basta utilizzare il codice è già scritto:
<a href="<?php echo url::site(url::current()) . http_build_query($_GET); ?>">
EDIT: ho letto male il tuo post. Pensavo volessi solo per togliere la coppia campo / valore dalla richiesta GET. Tutto quello che dovete fare è sovrascrivere il valore con il valore che si desidera:
$_GET['itemsperpage'] = 15;
E quindi utilizzare il codice già scritto.