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. hola amigos, quisiera saber donde puedo conseguir informacion para entender como funcionan los patrones, como ven esa forma de codificar, que es muy rara y ...
  #1 (permalink)  
Antiguo 14/06/2007, 13:55
 
Fecha de Ingreso: junio-2007
Mensajes: 42
Antigüedad: 16 años, 11 meses
Puntos: 0
preg_replace

hola amigos, quisiera saber donde puedo conseguir informacion para entender como funcionan los patrones, como ven esa forma de codificar, que es muy rara y no deducible.

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

$text = preg_replace($patron,$eemplazo,$asunto);

o si pudieran modificar ese codigo para que no corte el texto a 15 caracteres, sino mas bien , capture todo . ejemplo

[local]mi_texto_cualquiera[/local]

cuando aplico ese codigo me devuelve "mi_texto_cualqu"

espero su ayuda gracias
  #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
  #3 (permalink)  
Antiguo 14/06/2007, 14:41
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Re: preg_replace

Sin duda una excelente página, muy didáctica y en español es http://www.ignside.net/man/php/regex.php

Saludos
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 01:52.