En el hilo de comentarios de la entrada PHP Function: Remove a Query String Key, Value del blog de David Walsh hay un buen puñado de funciones que permiten eliminar parámetros de una URL. Una de ellas me parece una solución más sencilla que la propone el propio David.
La he modificado mÃnimamente para que ofrezca la posibilidad de eliminar más de un parámetro:
// Elimina los parámetros suministrador mediante la array $keys de la URL $url function remove_url_query_args($url,$keys=array()) { $url_parts = parse_url($url); if(empty($url_parts['query'])) return $url; parse_str($url_parts['query'], $result_array); foreach ( $keys as $key ) { unset($result_array[$key]); } $url_parts['query'] = http_build_query($result_array); $url = (isset($url_parts["scheme"])?$url_parts["scheme"]."://":""). (isset($url_parts["user"])?$url_parts["user"].":":""). (isset($url_parts["pass"])?$url_parts["pass"]."@":""). (isset($url_parts["host"])?$url_parts["host"]:""). (isset($url_parts["port"])?":".$url_parts["port"]:""). (isset($url_parts["path"])?$url_parts["path"]:""). (isset($url_parts["query"])?"?".$url_parts["query"]:""). (isset($url_parts["fragment"])?"#".$url_parts["fragment"]:""); return $url; }
Por ejemplo:
$keys = array("param1","param3"); $url = "http://example.org/?param1=value1&param2=value2&param3=value3"; echo remove_url_query_args($url,$keys); // output: http://example.org/?param2=value2
6 comentarios
he tenido un ataque por SQL injection y me gustarÃa saber donde tengo que poner este código, me imagino que la función la pondrÃa en mi archivo del funciones.php pero como implemento el otro código a las url?
El último bloque de código indica cómo aplicar la función a un URL. No sé si te refieres a eso, David.
si, donde tengo que colocar ese codigo?
En el archivo que genera la página en la que quieras filtrar la URL.
En pocas palabras, esta función tiene una infinidad de formas de ser aplicada dentro de un desarrollo, muchas gracias.
Gracias a ti Jhon, por leer el blog :)