Foros del Web » Programando para Internet » PHP »

Problema con expresion regular (varias lineas)

Estas en el tema de Problema con expresion regular (varias lineas) en el foro de PHP en Foros del Web. Buenas, Tengo los siguientes fragmentos de texto, no los puedo "cambiar" ya que es el resultado de leer una pagina en la red, por lo ...
  #1 (permalink)  
Antiguo 06/03/2010, 14:20
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Problema con expresion regular (varias lineas)

Buenas,

Tengo los siguientes fragmentos de texto, no los puedo "cambiar" ya que es el resultado de leer una pagina en la red, por lo que la información no está bien escrita como me gustaría a mi.

Estoy encontrando problemas para extraer los siguientes campos:

Valores id=95&w=895&m=1091628&s=ws

95
895
1091628
ws
Texto1
fila1
fila2
fila3[/B]


Código HTML:
Ver original
  1. <tr bgcolor="white">
  2. <td class=zero><a style="color: navy; font-size:11px" target=_blank href="http://www.web.com/bc?id=95&w=895&m=1091628&s=ws">
  3. Texto 1</a></td>
  4. <td class=zero>fila1</td>
  5.  
  6. <td class=one>fila2</td>
  7.  
  8. <td class=zero bgcolor=#E6B099
  9. >fila3</b></td>
  10.  
  11. <td class=zero><script language="JavaScript">
  12.  
  13. write_local_time(1267885894000);
  14.  
  15. </script></td></tr>


Estaba armando la siguiente expresión regular, el problema está que la declaración del enlace está en varias lineas, y si bien puedo coger los valores del enlace:

95
895
1091628
ws


no consigo capturar el "Texto 1", y el resto de variables imagino que es el mismo problema... no me trata todo el texto como una única linea.

<a.*id=([0-9]+)&w=([0-9]+)&m=([0-9]+)&s=(.*)">

Me podéis echar una mano? lo he intentado añadiendo al final otro (.*) pero no captura nada mas...

Muchas gracias de antemano!
  #2 (permalink)  
Antiguo 06/03/2010, 14:24
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con expresion regular (varias lineas)

para eso puedes usar los modificadores... en este caso s, que hace que todo el texto sea considerado una sola linea....

ya que si no lo haces, como dices, es mas complejo tratar el texto en varias lineas... (:
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 06/03/2010, 14:47
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Problema con expresion regular (varias lineas)

Cita:
Iniciado por pateketrueke Ver Mensaje
para eso puedes usar los modificadores... en este caso s, que hace que todo el texto sea considerado una sola linea....

ya que si no lo haces, como dices, es mas complejo tratar el texto en varias lineas... (:
Gracias pateketrueke,

Conseguí saltar a la siguiente linea, pero otro problema me acecha

No consigo extraer las

fila1
fila2
fila3

Lo intenté con

<a.*id=([0-9]+)&w=([0-9]+)&m=([0-9]+)&s=(.*)">(.*)<\/a\>.*?class=[\w]>(.*)<\/td\>

Pero no hay manera.

Se te ocurre alguna otra forma?

Mil gracias
  #4 (permalink)  
Antiguo 06/03/2010, 14:50
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con expresion regular (varias lineas)

enserio planeas hacer todo con una sola expresión??

además, nota que en tu expresión de los <td/> usas [\w] y vamos... no le hace falta un cuantificador??
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 06/03/2010, 17:25
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Problema con expresion regular (varias lineas)

Cita:
Iniciado por pateketrueke Ver Mensaje
enserio planeas hacer todo con una sola expresión??

además, nota que en tu expresión de los <td/> usas [\w] y vamos... no le hace falta un cuantificador??
Jejejeje

Es mejor que la divida en dos de esta manera?

<a.*id=([0-9]+)&w=([0-9]+)&m=([0-9]+)&s=(.*)">[\n](.*)<\/a\>(.*)

¿Y coger el resto (.*) guardarlo en una variable y volver a pasar otra expresion regular?

Código:
0.0: (<a style="color: navy; font-size:11px" target=_blank href="http://www.web.com/bc?id=95&w=895&m=1091628&s=ws">
Texto 1</a></td>
<td class=zero>fila1</td>
 
<td class=one>fila2</td>
 
<td class=zero bgcolor=#E6B099
>fila3</b></td>
 
<td class=zero><script language="JavaScript">
 
write_local_time(1267885894000);
 
</script></td></tr>
)
1.0: (95)
2.0: (895)
3.0: (1091628)
4.0: (ws)
5.0: (Texto 1)
6.0: (</td>
<td class=zero>fila1</td>
 
<td class=one>fila2</td>
 
<td class=zero bgcolor=#E6B099
>fila3</b></td>
 
<td class=zero><script language="JavaScript">
 
write_local_time(1267885894000);
 
</script></td></tr>
)

Saludos!

Etiquetas: expresion, lineas, regular
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 13:01.