Tema: preg_replace
Ver Mensaje Individual
  #2 (permalink)  
Antiguo 14/06/2007, 14:06
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: preg_replace

$patron = "#\[local\]([0-9A-Za-z-_]{15})[^[]*\[/local\]#is";

# son los delimitadores del patrón, así que el patrón es
\[local\]([0-9A-Za-z-_]{15})[^[]*\[/local\]

Esto es:
Buscá una coincidencia de [local] (los corchetes van escapados porque tienen un significado especial), luego buscá 15 números, letras y guiones ( "0-9A-Za-z-_" ), luego cualquier caracter que no sea [ (porque estaría marcando el comienzo de otro [/local]) y luego tiene que ir [/local].

Para cambiar la cantidad de caracteres que se encuentran, tenés que modificar el cuantificador {15}

{x,y} quiere decir que se encuentren como mínimo x y como máximo y.
cualquiera de los dos puede no estar (obvio que no pueden faltar ambos).

con * elegís cualquier cantidad de caracteres, con + al menos 1.

Entonces, si querés capturar todo caracter entre [local] y [/local], el patrón sería:
\[local\]([0-9A-Za-z-_]*)\[/local\]

(capturá cualquier cantidad de números, letras o guiones, ojo que si hay algún otro caracter la comparación falla)

Las opciones luego del delimitador # (is) son para que no tenga en cuenta las mayúsculas (i) y para que no tenga en cuenta saltos de línea (s)

En realidad los patrones son bastante lógicos, una vez que sabés usarlos.

Si te interesa, en mi blog tengo un tutorial en varias partes sobre las Expresiones Regulares. (¿promoción desvergonzada? ¡Sí! )


Saludos.

Última edición por AlvaroG; 14/06/2007 a las 14:11