Hay veces en las que nos es necesario recuperar la url y actualizar un valor determinado, como por ejemplo en un paginador en el que queremos cambiar el número de página, pero mantener el resto de parámetros. Por norma general (siempre y cuando no sea muy extensa) rehacemos la url en función de los parámetros que sabemos estamos pasando, pero y si no sabemos que parámetros estamos pasando ?

Para ello, esta pequeña pero útil función, nos permitirá cambiar un parámetro y asignarle el valor que queramos, respetando siempre el resto de la estructura de la url.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php
  // Definimos la página que recibe
  // los parámetros de la url define('URL','index.php');
  function urL($variable, $valor)
  {
    // Recuperamos la url recibida
    // y la reseteamos por si ya fué utilizada
    reset($_GET);
    // Una vez reseteada la tratamos a nuestro gusto
    $url = URL.'?'.$variable.'='.$valor;
    // Creamos un bucle con todos los parámetros
    // recuperados de la url
    while(list($key, $val) = each($_GET))
    {
      // Metemos todos esos parámetros en una variable
      // siempre que no sean iguales a los parametro
      // que pasamos por la función ($variable)
      if($key != $variable)
      {
        if (strlen($url) > 1)
        {
          $url.= '&';
        }
        $url.= $key.'='.urlencode($val);
      }
    }
    return $url;
}

/*
Modo de uso
Si queremos cambiar el parámetro idioma en la url
index.php?idioma=es&id=150&cat=10&pagina=4
Haríamos lo siguiente:
urL('idioma','en');
o también
urL('idioma',$_GET['idioma']);
*/


?>