jueves, 24 de mayo de 2012

Como sacar todas las Urls de las imágenes de cualquier documento html

 /** ***********************************
 *                                     *
 * Función para sacar Urls de imágenes *
 *                                     *
 **************************************/
  function imgurl($url){
    //$url ha de tener código html, en el caso de que quieras abrir una página se utiliza $url = file($url);
    //buscamos la etiqueta <img> con la siguiente expresión regular
 if(preg_match_all('/<img.*?src=(\'|")((http|https|ftp|\/)\s*)([^\s]*)(\'|")/', $url, $resultado, PREG_SET_ORDER)){
      //creamos una variable y la declaramos vacia
   $addimg = '';
      //itineramos los resultados
      foreach ($resultado as $sresultado){
    //volvemos a hacer una expresión regular, en este caso con preg_replace para quitar todo lo innecesario
        $addimg2 = preg_replace('/<img.*?src=(\'|")/i', '', $sresultado[0]);   
        $addimg .= preg_replace('/".*?/i', '', $addimg2).'<br>';     
   }
      //puesto que no me interesa el último caracter de addimg ya que es una "," lo elimino con substr 
      $addimg = substr ($addimg, 0, -1);
      return $addimg;
 }
  }

Trabajar con expresiones regulares puede llegar a ser difícil, pero con un poco de estudio se resuelve rápido. En esta función, lo que más problemas puede dar, es obviar lo que haya entre <img y src=, como atributos width, height, class, alt... Con la expresión (.*?) obviamos cualquier elemento que se repita 0 o más veces en la expresión entre img y src. Para más información: preg_match_all  y preg_replace

Os recomiendo que os leáis el siguiente tutorial que lo explica "for dummies":

Manual completo y sencillo de Expresiones Regulares en PHP

No hay comentarios:

Publicar un comentario