Foros del Web » Programando para Internet » PHP »

Expresión regular toma Primer y último valor saltando intermedios

Estas en el tema de Expresión regular toma Primer y último valor saltando intermedios en el foro de PHP en Foros del Web. Hola... estoy usando expresiones regulares para obtener contenido entre dos etiquetas BBCODE [TAG]contenido con saltos de línea y todo tipo de espacios vacíos [/TAG] Zona ...
  #1 (permalink)  
Antiguo 14/09/2011, 04:57
Avatar de Alvaro_Franz  
Fecha de Ingreso: mayo-2011
Mensajes: 84
Antigüedad: 12 años, 11 meses
Puntos: 4
Expresión regular toma Primer y último valor saltando intermedios

Hola... estoy usando expresiones regulares para obtener contenido entre dos etiquetas BBCODE

[TAG]contenido
con saltos de línea y
todo tipo de espacios
vacíos
[/TAG]

Zona intermedia

[TAG]sigue el contenido
por otro lado
[/TAG]

Ahora que logré agregar los saltos de línea, me surge un problema nuevo, y es que toma como referencia únicamente el primer y último tag... metiendo TODO el resto dentro...

Estoy usando esto: '/\[HIGHLIGHT\](.*)\[\/HIGHLIGHT\]/s'

Agregué el modificador s para tomar todos los valores, pero ahora me salta los tags intermedios.
__________________
La verdadera libertad consiste en dominarse a uno mismo
  #2 (permalink)  
Antiguo 14/09/2011, 07:37
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Expresión regular toma Primer y último valor saltando intermedios

Es que estas usando (.*) y al usar eso le dices a la expresión regular "que trague todo lo que pueda hasta encontrar la ultima coincidencia", que se le llama greedy matching.
Para evitar esto, usa (.*?)

Un saludo
  #3 (permalink)  
Antiguo 14/09/2011, 07:40
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Expresión regular toma Primer y último valor saltando intermedios

Revisa la documentación de preg_match en el manual de PHP.

Ahí hay ejemplos para conseguir lo que planteas.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 14/09/2011, 09:12
Avatar de Alvaro_Franz  
Fecha de Ingreso: mayo-2011
Mensajes: 84
Antigüedad: 12 años, 11 meses
Puntos: 4
Respuesta: Expresión regular toma Primer y último valor saltando intermedios

Cita:
Iniciado por Ronruby Ver Mensaje
Es que estas usando (.*) y al usar eso le dices a la expresión regular "que trague todo lo que pueda hasta encontrar la ultima coincidencia", que se le llama greedy matching.
Para evitar esto, usa (.*?)

Un saludo
Muchas gracias por la información.

Gracias también a pateketrueke por su aportes obre expresiones regulares.
__________________
La verdadera libertad consiste en dominarse a uno mismo
  #5 (permalink)  
Antiguo 14/09/2011, 14:36
Avatar de hasdpk  
Fecha de Ingreso: agosto-2011
Ubicación: $spain->city( 'Arucas' );
Mensajes: 1.800
Antigüedad: 12 años, 7 meses
Puntos: 297
Respuesta: Expresión regular toma Primer y último valor saltando intermedios

Te paso otros enlaces:

http://www.pixel2life.com/forums/index.php?/topic/10659-php-bbcode-parser/page__view__findpost__p__71880
http://www.webtaller.com/construccion/lenguajes/php/lecciones/tutorial_de_bbcode_en_php.php

Etiquetas: primer, regular, toma
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 19:20.