Foros del Web » Programando para Internet » PHP »

reemplazo de coincidencias en un patron

Estas en el tema de reemplazo de coincidencias en un patron en el foro de PHP en Foros del Web. hola... tengo por ejemplo el siguiente patron: categoria/([a-z]+)(/pag/([0-9]+))? que hace que coincida con: categoria/pcs categoria/pcs/pag/1 categoria/televisores/pag/200 lo uso para generar urls amigables (claro que las ...
  #1 (permalink)  
Antiguo 13/11/2007, 14:56
Avatar de luistar  
Fecha de Ingreso: marzo-2005
Ubicación: Argentina
Mensajes: 939
Antigüedad: 19 años, 1 mes
Puntos: 0
reemplazo de coincidencias en un patron

hola...

tengo por ejemplo el siguiente patron:

categoria/([a-z]+)(/pag/([0-9]+))?

que hace que coincida con:

categoria/pcs
categoria/pcs/pag/1
categoria/televisores/pag/200

lo uso para generar urls amigables
(claro que las barras en el patrón las escapo antes buscar coincidencias)

los patrones son diversos y los tengo en un array asociativo, algo así

Código PHP:
$urls = array(
    
'producto' => '([a-z]+)/producto/([a-z]+)',
    
'notia' => 'noticia/([a-z\-]+)(/comentarios)?'
); 
lo que hago es comparar la url que ingresan en el navegador con cada uno de los patrones y si coincide con alguno sé qué escript ejecutar
adicionalmente identifico las coincidencias que luego los uso como variables en el escript correspondiente
ejem
url: peru/producto/calamar
patron: ([a-z]+)/producto/([a-z]+)
coincidencias: array('peru', 'calamar')

ahora necesito armar las urls para los links basandome en los patrones que ya tengo
necesito una funcion armarURL del tipo:

Código PHP:
$url_final armarURL($urls['producto'],array('chile','pisco')); 
donde $url_final deberia contener: chile/producto/pisco

osea que reemplaze una a una las posibles coincidencias en el patron por los elementos del array del segundo argumento

ayuda maestros :)
__________________
Si digo que soy mentiroso. ¿Lo soy?
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 17:15.