elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Usando expresiones regulares cuando hay saltos de línea
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Usando expresiones regulares cuando hay saltos de línea  (Leído 24,580 veces)
‭lipman


Desconectado Desconectado

Mensajes: 3.062



Ver Perfil WWW
Usando expresiones regulares cuando hay saltos de línea
« en: 27 Junio 2011, 11:16 am »

Wenas, estoy tratando de usar el preg_match_all y las expresiones regulares para poder buscar textos dentro de documentos html.

Si quisiera por ejemplo el interior del body de un html, lo que en principio se me ocurriría de hacer sería un:

preg_match_all('/(<body>)(.*)(<\/body>)/',$data,$resultado);

El problema es que cuando hay saltos de línea de por medio, esto no funciona.

A alguien se le ocurre algo que pudiera hacer? quizás borrar los saltos de línea? Como haría esto?

Un saludo y gracias!


En línea

Darkgold9

Desconectado Desconectado

Mensajes: 62



Ver Perfil
Re: Usando expresiones regulares cuando hay saltos de línea
« Respuesta #1 en: 27 Junio 2011, 12:07 pm »

Wenas, he estudiado ese tema este año en la uni aunq no exactamente con lo que tu intentas, pero el error es que el operador comodin (el "." que pones ai) acepta cualquier caracter excepto el salto de linea, creo que una posible solucion seria que pusieses en un conjunto que aceptas el comodin y el salto de linea, algo asi he estudiado yo: [.\n]*, o tmb aunq esta nose si te valdria al 100%, puedes poner q aceptas todo menos entrecomillados o algun caracter que no kieras, ej: [^\"].


En línea

‭lipman


Desconectado Desconectado

Mensajes: 3.062



Ver Perfil WWW
Re: Usando expresiones regulares cuando hay saltos de línea
« Respuesta #2 en: 27 Junio 2011, 13:01 pm »

Exacto.

Al final lo solucioné casi como me dijiste, de la siguiente forma

((.*)\n*)

Ya que sino, solo podia tomar un caracter + salto de línea

Un saludo!
En línea

‭lipman


Desconectado Desconectado

Mensajes: 3.062



Ver Perfil WWW
Duda con expresiones regulares
« Respuesta #3 en: 27 Junio 2011, 14:04 pm »

He vuelto a tener una duda existencial con las expresiones regulares, a ver si alguno sabe como solucionarlo. Cuando buscamos algo con expresiones regulares, no es sucesivo y va de izquierda a derecha, me explico:

Imaginemos que tengo la cadena <b>Hola <i>Mundo</i></b>

Si hiciera un preg_match_all, poniendo de patron algo como:

\<(.*)\>

Me cogería toda la cadena, ya que el sistema entiende:

<b>Hola <i>Mundo</i></b>

Sin embargo, mi pregunta es, si esto se puede cambiar, para que buscase y diese de resultado:

<b>

No se si me explico.. Esta duda existencial me viene a raiz de que quiero obtener la ruta de todas las imágenes de una página web. El contenido de esta página web lo tengo en una variable, entonces hago:

Código:
preg_match_all("/\<img(.*)src=(\"|')(.*(\.(jpg|png|gif)))(\"|')/",$valor,$asd);

En principio parece que funciona bien, pero si se encuentra con esto por ejemplo, no funciona bien:

Código:
<img src="http://imagen.png" width="320" /></a></div><a href="http://imagen.png">

Ya que me devuelve: http://imagen.png" width="320" /></a></div><a href="http://imagen.png, en lugar de http://imagen.png

Alguna solución? (tengo que hacerlo con expresiones regulares, no me valdria hacer explodes ni nada por el estilo)

Un saludo!
En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: Usando expresiones regulares cuando hay saltos de línea
« Respuesta #4 en: 27 Junio 2011, 16:02 pm »

Mira esta que acabo de crear, es un poco avanzada!.

Código:
<img.+src=(?:\"|\')(?i)([^"']+)(?<=png|jpg|gif)(?-i)

Prueba la y cuenta.
En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: Usando expresiones regulares cuando hay saltos de línea
« Respuesta #5 en: 27 Junio 2011, 17:22 pm »

Regular Expressions - Repetition with Star and Plus mira la parte de "Watch Out for The Greediness!"

:)
En línea

‭lipman


Desconectado Desconectado

Mensajes: 3.062



Ver Perfil WWW
Re: Usando expresiones regulares cuando hay saltos de línea
« Respuesta #6 en: 30 Junio 2011, 11:45 am »

Muy bueno, no lo conocía!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Expresiones regulares
Programación Visual Basic
chrominum 1 2,350 Último mensaje 30 Enero 2008, 23:09 pm
por LeandroA
Expresiones Regulares + Php wtf!
PHP
Shell Root 4 4,493 Último mensaje 29 Marzo 2010, 01:24 am
por Castg!
expresiones Regulares
.NET (C#, VB.NET, ASP)
Choclito 3 5,632 Último mensaje 1 Mayo 2010, 05:09 am
por raul338
Expresiones Regulares
Programación General
Psyke1 9 5,468 Último mensaje 1 Junio 2010, 02:12 am
por SeC
El fundador de Silk Road estaba usando Ubuntu cuando fue detenido
Noticias
wolfbcn 0 1,383 Último mensaje 22 Noviembre 2013, 14:08 pm
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines