Foros del Web » Programando para Internet » PHP »

preg_replace: reemplazar valor de parámetro en querystring

Estas en el tema de preg_replace: reemplazar valor de parámetro en querystring en el foro de PHP en Foros del Web. Hola, tengo una url de la forma: Código: /lista_usuarios.php ?pg=1 o bien /lista_usuarios.php?param=0 &pg=1 &mas_param=0 Y la quiero cambiar por: Código: /lista_usuarios.php ?pg=2 o bien ...
  #1 (permalink)  
Antiguo 11/11/2010, 10:23
Avatar de PosProdukcion  
Fecha de Ingreso: noviembre-2004
Ubicación: Manzanares el Real (Madrid)
Mensajes: 726
Antigüedad: 20 años
Puntos: 9
preg_replace: reemplazar valor de parámetro en querystring

Hola, tengo una url de la forma:

Código:
/lista_usuarios.php?pg=1 

o bien

/lista_usuarios.php?param=0&pg=1&mas_param=0
Y la quiero cambiar por:

Código:
/lista_usuarios.php?pg=2

o bien

/lista_usuarios.php?param=0&pg=2&mas_param=0
En definitiva, quiero modificar el valor del parámetro pg del querystring.

Utilizo preg_replace, pero no consigo dar con el patrón de reemplazo adecuado.

Tengo

Código PHP:
Ver original
  1. $url = "/lista_usuarios.php?param=0&pg=1&mas_param=0";
  2.    
  3.     $patron = "#(\?pg=|\&pg=)(\d)#i";
  4.     preg_match($patron, $url, $new_url);
  5.    
  6.     echo "0: " .$new_url[0]."<br>";
  7.     echo "1: " .$new_url[1]."<br>"; /*AQUI ESTA &PG=*/
  8.     echo "2: " .$new_url[2]."<br>"; /*AQUI ESTA EL VALOR DE PG*/
  9.  
  10.     $reemplazo = '$1NUEVO_VALOR';
  11.     $url2 = preg_replace($patron, $reemplazo, $url);
  12.  
  13.     echo $url2."<br>";

Si NUEVO_VALOR es un string, hace el reemplazo bien, pero como debe ser un valor numérico, si pongo "$12" no se si lo toma como el número doce o qué debo poner para que tome el número 2 asociado al patrón $1.

Gracias
  #2 (permalink)  
Antiguo 11/11/2010, 11:41
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: preg_replace: reemplazar valor de parámetro en querystring

bueno, puedes usar diversas técnicas:
Cita:
preg_replace('/([?&])pg=(\d+)/', '\\1pg=NUEVO_VALOR', 'foo&pg=9&bar');
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: preg_replace, url
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:25.