Tengo la siguiente URL que sale de un formulario enviado por GET:
http://midominio.com/index.php?edad=22&&pais=argentina&provincia[]=buenos+aires&provincia[]=cordoba
Destripando las variables tengo:
edad = 22
pais = argentina
provincia [] = buenos aires
provincia [] = cordoba
Lo que quiero hacer, es, una vez obtenida la URL, procesarla para cambiar esas variables a través de alguna funcion generica.
Buscando un poco encontre un par de funciones que realizan lo que quiero:
Código PHP:
function get_self_link($new_get_vars=array(),$full_url=false) {
$string = '';
$get_vars = $_GET;
foreach ( $new_get_vars as $k=>$v )
$get_vars[$k] = $v;
$protocol = ( isset($_SERVER['HTTPS']) &&
$_SERVER['HTTPS']=='on' ) ? 'https' : 'http';
$current_url = $protocol.'://'.$_SERVER['HTTP_HOST'].
$_SERVER['REQUEST_URI'];
$url_parts = @parse_url($current_url);
$query = get_query_string($get_vars);
if ( $full_url )
$string = $protocol.'://'.$_SERVER['HTTP_HOST'];
$string .= $url_parts['path'].$query;
return $string;
}
function get_query_string($attribs) {
$query = '?';
foreach ( $attribs as $k=>$v ) {
if ( $v !== null && !is_array($v) ) {
$query .= $k;
$query .= '='.str_replace('%2F','/',urlencode($v));
$query .= '&';
}
}
$query = substr($query,0,-1);
$query = str_replace('&','&',$query);
return $query;
}
Las funciones se utilizarian así:
Código PHP:
$url = "http://midominio.com/index.php?edad=22&&pais=argentina&provincia[]=buenos+aires&provincia[]=cordoba";
$variables_set = array("pais" => "uruguay", "edad" => "35");
$url_nueva = get_self_link($variables_set, $url);
http://midominio.com/index.php?edad=35&&pais=uruguay&provincia[]=buenos+aires&provincia[]=cordoba
pero me devuelve:
http://midominio.com/index.php?edad=35&&pais=uruguay
O sea, que no procesa los arrays que se le pasan a la URL original.
Podrian ayudarme para que la funcion procese los arrays y los añada a la URL final? O conocen un mejor método para hacerlo y que cumple lo que deseo?
Muchas gracias,
Saludos