Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/07/2008, 07:14
mariano_donati
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 1 mes
Puntos: 9
Backreference en expresiones regulares

Buenos días para todos. Estoy empezando a trabajar con expresiones regulares en php. Tengo una cadena del tipo "Wed, 30 jul 2008 09:00:00 -03:00" y quiero transformarla en "Wed, 30 jul 2008 09:00". Este es mi código:

Código:
$cadena = "Wed, 30 jul 2008 09:00:00 -03:00";
$patron = "-[[:digit:]]{2}\:[[:digit:]]{2}";
$cadena = ereg_replace($patron,"",$cadena);
$patron = "([[:digit:]]{2}\:[[:digit:]]{2})\:[[:digit:]]{2}";
$cadena = ereg_replace($patron,"\1",$cadena);
echo($cadena);

El primer reemplazo (me elimina la hora GMT) funciona correctamente. En el segundo reemplazo agrupo la hora y los minutos, y dejo fuera de este grupo a los segundos. Luego, al ejecutar ereg_replace() quiero que me sustituya la coincidencia por este grupo, pero no encuentro forma de lograrlo. Probe con "1", "$1" y "\1" y no se me ocurre de que otra forma puede ser. Lo único que hace es reemplazarme la coincidencia exactamente por esos valores, y no por el grupo al que quiero hacer referencia. ¿Alguna idea de como hacerlo?. Saludos a todos.
__________________
Add, never Remove