Foros del Web » Programando para Internet » PHP »

preg_replace

Estas en el tema de preg_replace en el foro de PHP en Foros del Web. Buenas. Estoy rompiéndome la cabeza y puede que sea más sencillo de lo que parece, pero la cosa es que no consigo encontrar la solución. ...
  #1 (permalink)  
Antiguo 17/03/2006, 14:40
Avatar de qwerty_wq  
Fecha de Ingreso: enero-2005
Mensajes: 109
Antigüedad: 12 años, 10 meses
Puntos: 1
preg_replace

Buenas. Estoy rompiéndome la cabeza y puede que sea más sencillo de lo que parece, pero la cosa es que no consigo encontrar la solución. El problema es que quiero usar la función preg_replace para convertir URL con variables a URL con subcarpetas del tipo:

http://www.miweb.com/index.php?parametro1=valor1&parametro2=valor2 (...) parametroN=valorN

...a...

http://www.miweb.com/parametro1/valor1/parametro2/valor2/ (...) parametroN/valorN/

¿Cómo se puede detectar un patrón indefinido y hacer lo que quiero hacer?

He probado distintas fórmulas, estrategias y trucos, pero no consigo hacerlo. Además he leído en PHP.NET la documentación de esa función y la que versa sobre los patrones, pero no he encontrado.

¿Estoy ciego o me estoy volviendo idiota?

Muchas gracias.
  #2 (permalink)  
Antiguo 17/03/2006, 14:54
 
Fecha de Ingreso: diciembre-2005
Mensajes: 165
Antigüedad: 12 años
Puntos: 4
A ver, lo que quieres es que al hacer click te lleve a una pagina tipo:
http://www.miweb.com/parametro1/valo...metro2/valor2/
Pero que se interprete como:
http://www.miweb.com/index.php?param...ametro2=valor2
????
Si es eso, deberias leerte la funcion MOD_REWRITE y .HTACCESS, si el servidor es APACHE, claro
  #3 (permalink)  
Antiguo 17/03/2006, 16:34
Avatar de qwerty_wq  
Fecha de Ingreso: enero-2005
Mensajes: 109
Antigüedad: 12 años, 10 meses
Puntos: 1
No, lo que quiero es que me convierta la cadena:

$cadenaa = "http://www.miweb.com/index.php?parametro1=valor1&parametro2=valor2 (...) parametroN=valorN";

En la cadena:

$cadenab = "http://www.miweb.com/parametro1/valor1/parametro2/valor2/ (...) parametroN/valorN/";

(en ambas cadenas se entiende una progresión al infinito)

Lo del mod_rewrite ya lo tengo hecho

Es simplemente hacer una sustitución, pero infinitamente (o "Nmente"), siguiendo un patrón ocn la función preg_replace. Pero no sé escribir ese patrón.
  #4 (permalink)  
Antiguo 17/03/2006, 16:36
Avatar de qwerty_wq  
Fecha de Ingreso: enero-2005
Mensajes: 109
Antigüedad: 12 años, 10 meses
Puntos: 1
Además, si te das cuenta, lo que se haría con el mod_rewrite sería justo lo contrario, es decir, pasar de la URL "leíble" (con directorios) a la que se usa en el script (con variables).
  #5 (permalink)  
Antiguo 19/03/2006, 10:57
Avatar de qwerty_wq  
Fecha de Ingreso: enero-2005
Mensajes: 109
Antigüedad: 12 años, 10 meses
Puntos: 1
¿Hay alguien que tenga alguna idea? Me molesta mucho tener que recurrir a un bucle, que vaya detectando la estructura secuencialmente...
  #6 (permalink)  
Antiguo 19/03/2006, 14:14
Avatar de Panino5001
Moderatroll
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.062
Antigüedad: 13 años, 6 meses
Puntos: 775
Código PHP:
<?php
function convertir($url){
$ret=str_replace('?','/',$url);
$ret=str_replace('=','/',$ret);
$ret=str_replace('&','/',$ret);
return 
$ret;
}
$cadenaa "http://www.miweb.com/index.php?parametro1=valor1&parametro2=valor2";
echo 
convertir($cadenaa); 
?>
  #7 (permalink)  
Antiguo 20/03/2006, 13:32
Avatar de qwerty_wq  
Fecha de Ingreso: enero-2005
Mensajes: 109
Antigüedad: 12 años, 10 meses
Puntos: 1
Muchas gracias, Panino5001. Definitivamente, me estoy volviendo idiota. Algo tan simple como esa solución y no se me ocurrió. Empecinado con las expresiones regulares, y no supe ver la forma más simple de hacerlo.
  #8 (permalink)  
Antiguo 20/03/2006, 15:01
Avatar de Panino5001
Moderatroll
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.062
Antigüedad: 13 años, 6 meses
Puntos: 775
A mi me pasa al revés: como odio las regexp (odio que nace del hecho de no dominarlas bien) siempre veo primero cómo hacerlo sin ellas, je!
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 13:37.