Corsi on-line

Estrarre le immagini da una pagina Web con PHP

A seguito della richiesta di un cliente ho dovuto realizzare uno script PHP per estrarre tutte le immagini presenti all’interno di una pagina web.
Lo script, in realtà, è piuttosto semplice: non faccio altro che connettermi alla pagina web ed estrarne il contenuto (il sorgente HTML) per poi cercarci dentro, attraverso un’espressione regolare, utilizzando la funzione preg_match_all(). Di seguito lo scheletro dello script:

<?php
function FetchPage($path)
{
  $file = fopen($path, "r"); 
  if (!$file)
  {
    exit("Impossibile accedere al file!!!");
  } 
  $data = '';
  while (!feof($file))
  {
    $data .= fgets($file, 1024);
  }
  return $data;
}

// pagina da cui estrarre le immagini
$url = 'http://www.mrwebmaster.it/';

// estraggo il contenuto HTML della pagina
$string = FetchPage($url);

// estraggo i tag d'immagine
preg_match_all('/<img[^>]*src=[\"|\'](.*)[\"|\']/Ui', $string, $out);

// creo due array...
// la prima contenente i tag delle immagini
// la seconda contenente le URL delle immagini
$img_tag_array = $out[0];
$img_url_array = $out[1];

// stampo a video il contenuto delle due array
echo "<pre>"; print_r($img_tag_array); echo "</pre>";
echo "<pre>"; print_r($img_url_array); echo "</pre>";
?>

Si noti che per la funzione FetchPage ho utilizzato fopen e fgets in quanto sullo spazio web che avevo a disposizione non era installata la libreria CURL.

Nota: a questa pagina è disponibile uno script PHP grazie al quale è possibile copiare dinamicamente tutte le immagini di una pagina web e salvarle in una cartella locale.

Post correlati
  • giancarlo

    e se volessi estrarre le immagini contenute in una pagina di profilo pubblico di facebook? ho notato che mi estrae soltanto un’immagine gif di 1×1 px che non ha senso….. se la sono studiata per bene i programmatori facebook!!!
    se c’e’ una soluzione a portata di mano puoi indicarmela? grazie.

I più letti del mese
Tematiche