Mostrando entradas con la etiqueta php. Mostrar todas las entradas
Mostrando entradas con la etiqueta php. Mostrar todas las entradas

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