Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/09/2014, 05:16
Anonimo12
 
Fecha de Ingreso: abril-2009
Ubicación: En foros del web, normalmente en Web general, HTML y CSS.
Mensajes: 258
Antigüedad: 15 años
Puntos: 3
Obtener enlace imagen

Buenos días:

He programado un script en PHP que recupera una web mediante cURL. El código fuente de esta web lo tengo almacenado en una variable y quiero aplicarle una Expresión Regular para obtener el link de una imagen. Le he dedicado varias horas y he encontrado una decena de opciones (por si a alguien le sirve, he encontrado algunas opciones aquí: http://www.forosdelweb.com/f183/), pero no obtengo el resultado deseado, sé que con una mano más hábil se puede resolver en un momento.

La web la tengo en la variable "$resultado" (que es donde hay que buscar la imagen). El contenido es el siguiente:
Código HTML:
Ver original
  1. <!DOCTYPE ...
  2. <html>
  3. ...
  4. <img class="imageprod" src="http://www.pagina.com/recursos/imagenes/XXXXXXXXXX.jpg" alt="descripcion" border="0">
  5. ...
  6. </html>

La imagen se caracteriza por ser la primera con la clase "imageprod" (ya que posteriormente hay otras pero no me interesan), por eso he pensado que podría ser parte del patrón. El nombre de la imagen "XXXXXXXXXX" es una serie de 10 caracteres que pueden ser números o letras. Solo necesito el link (sin la etiqueta img ni ninguno de sus atributos).

He probado con un montón de cosas usando las funciones str_replace, preg_march y preg_replace de PHP. La opción que me ha parecido más correcta ha sido coger todo lo que no sea el enlace y sustituirlo por la cadena vacía "".

Código PHP:
Ver original
  1. $patron = "/([^=]=\"imageprod\")*/i";
  2.  
  3. /* Cualquier cosa que no sea el signo igual seguido de ="imageprod", es decir, desde el inicio de la web hasta encontrar la imagen (aunque no funciona porque después hay más imágenes con esa clase y necesito que afecte a la primera ocurrencia. */
  4.  
  5. echo preg_replace($patron, "", $resultado);

Otra opción:

Código PHP:
Ver original
  1. preg_match('/<img class=\"imageprod\" src=\"http://www.pagina.com/recursos/imagenes/[a-zA-Z0-9]+.jpg" alt=\"descripcion\" border=\"0\">/', $resultado, $coincidencias);
  2. echo $coincidencias[0];

Con este método debería devolverme la imagen con la etiqueta, pero ya me sería más sencillo utilizar la terminal de Ubuntu para quedarme solo con el link usando un grep.

No me importa si me proponéis otro método, agradecería a quien pudiera resolverme el problema ya que es muy urgente y lo tengo que tener listo para unas horas.

Un saludo.
__________________
¿Por qué Anónimo?, porque como está el mundo no podemos considerarnos humanos...

Última edición por Anonimo12; 30/09/2014 a las 05:23