Ver Mensaje Individual
  #4 (permalink)  
Antiguo 20/06/2013, 10:21
Avatar de kikerrobles
kikerrobles
 
Fecha de Ingreso: mayo-2013
Ubicación: Oviedo
Mensajes: 17
Antigüedad: 11 años
Puntos: 2
Respuesta: Problema con al expresión regular para coger imágenes

Hola Novato. Si lo quieres hacer con expresiones regulares deberías aprender un poco, en lugar de hacer pruebas a lo loco, es una verdadera locura , no es complicado cuando le coges el tranquillo, pero si no es todo un galimatías, y si no sabes que estas utilizando no sabes que resultados vas a poder obtener.

Lo primero es que la diferencia entre preg_match y preg_match_all es que preg_match solo te devuelve la primera coincidencia en el array de valores, mientras que preg_match_all te las devuelve todas.

Lo segundo, una regla bien sencilla es:
/^<img.+src=.+>$/i

Quiere decir que:
  • Empieza la cadena: ^
  • los primeros carateres son: <img
  • después, y hasta encontrar: src
  • puede haber uno o más carateres:(primer) .+
  • despues de src tambien puede haber uno o más caracteres:(segundo).+
  • hasta encontrar un caracter de cierre de etiqueta: >
  • termina la cadena: $
  • y especificamos que no distinga entre mayúsculas y minúsculas: i, ya que puede haber alguna definida como IMG o con SRC
  • Y todo ello englobado dentro de / /

Habrá imágenes sin "src" con un evento onload() por ejemplo, y otras que tengan rutas locales y por eso no te las muestre.
Si tienes una del tipo <img src="../load/images/imagen.png"/> lo más probable es que no puedas sacar la ruta de forma automática porque no estén basadas en root/load/images/imagen.png, si no que sean por ejemplo root/admin/logos/load/images/imagen.png
Tendrías que procesar cada imagen, ver si la ruta es completa, y si no lo es, sabiendo de que url la sacas añadírsela al comienzo.

Para extraer solo la ruta deberías usar algo así:

/^<img.+src="(.+)".+>$/i

Donde todo lo que haya entre el paréntesis será al ruta de la imagen y después llamándolo con $1 lo puedes añadir como parámetro. Lo del paréntesis sería algo más complejo porque habría que espicidicar que si empieza con dos puntos se eliminen del resultado (?:\.\.)*(.+)

Así que haz caso al compañero pateke y extrae mediante el DOM todos los atributos "src" de los elementos "img". Prueba con JQuery que a lo mejor te resulta más sencillo.

Si sigues con expresiones regualres esta página te ayuda a verificar si son válidas y a ver que te devuelve el parámetro $1
[URL="http://www.metriplica.com/es/recursos/expresiones-regulares"]http://www.metriplica.com/es/recursos/expresiones-regulares[/URL]