Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/09/2014, 10:38
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, 8 meses
Puntos: 3
Obtener subcadena con Expersiones Regulares

Buenas tardes:

Estoy intentando obtener un enlace de una variable (que contiene mucha más información) usando Expresiones Regulares pero sinceramente no me da el resultado esperado. Me explico:

Tengo una variable que almacena una página web (si, he hecho una solicitud con cURL y ahora tengo el HTML de la web en una variable). De ahí quiero sacar la URL de una imagen, para lo cual he probado dos métodos:

1. Reemplazar toda la web por la cadena vacía "" excepto el link que necesito:
Código PHP:
Ver original
  1. $resultado = str_replace("<!DOCTYPE([.|\n]*)<img class=\"imageprod\" src=\"", "", $resultado);
  2.         echo $resultado;

Como podéis ver el patrón empieza en el DOCTYPE (que es el inicio de la web) y llega hasta el src de la imagen (justo después se encuentra el enlace que quiero). Entre el DOCTYPE y el src de la imagen he utilizado la ER ([.|\n]*) que cubre cualquier carácter o salto de línea cero o más veces. Eso lo sustituyo por la cadena vacía y me quedo con la imagen (y lo que viene después, pero eso lo iliminaré con otro str_replace y un nuevo patrón, antes necesito que funcione este).

2. Obtener directamente el enlace:

Código PHP:
Ver original
  1. preg_match('http://www.pagina.com/recursos/imagenes/([\d|\w]*).jpg', $resultado, $coincidencias);
  2.         echo $coincidencias[1];

En esta ocasión, como la imagen va estar siempre en la misma ruta, el patrón es dicha ruta. Al final utilizo ([\d|\w]*) porque el nombre es una serie de caracteres (números o letras) acabados en ".jpg". La búsqueda se realiza en la variable $resultado y se almacena en $coincidencias.

La petición cURL se hace correctamente, eso ya lo he comprobado, en la variable "$resultado" contiene la URL de la imagen que necesito. He revisado el manual oficial de ambas funciones, pero no encuentro dónde está el problema. A ver si me podéis eschar una mano.

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