Gesamtgröße der Bilder einer Website eruieren - filesize funktioniert nicht

tina33333

Mitglied
Habe die Aufgabe Bilder aus einer Website auszuzlesen und die Gesamtgröße aller Bilder in kb auszugeben, aber irgendwie funktioniert das nicht und ich bekomme kein Ergebnis. Der Code lautet:
PHP:
<?php

$url='http://www.almhof-kirchberg.com';

$content = @file_get_contents($url);

$keyword="";
	echo research25($url, $content, $keyword);
		
function research25($url,$content,$keyword) {


 $pattern = "/src=[\\\"\']?([^\\\"\']?.*(png|jpg|gif))[\\\"\']?/i";
 preg_match_all($pattern, $content, $images); 

	echo "<pre>";
	#var_dump($images[1]);	

foreach ($images[1] as $bilder) {
echo "<pre>";
echo $bilder;

$bytes = filesize($bilder);
print_r($bytes);
echo "<br />";
echo "Gr&ouml;&szlig;e: ",round($bytes / 1024)," KByte"; //Soll Gesamtgröße aller Bilder ausgeben

  	
}

}
?>

Würde mich über Tipps sehr freuen.
 
Kommt dein Code überhaubt in die Bilder-Schleife rein? ALso findet er überhaubt Bilder?

Nachtrag:
Filesize() kannst du da eh nicht verwenden. Ein Blick in die PHP-Hilfe reicht um das herauszufinden
Beschreibung
int filesize ( string $filename )
Gibt die Größe einer Datei in Bytes zurück, oder FALSE wenn ein Fehler auftrat.

Das Ergebnis dieses Funktionsaufrufes wird zwischengespeichert. Siehe clearstatcache() für weitere Einzelheiten.

Diese Funktion ist nicht für remote Dateien geeignet, die zu prüfende Datei muss über das Dateisystem des Servers verfügbar sein.

Nachtrag2:
Mach keine @ vor die Befehle. das @ unterdrückt Fehler. Folgefehler sind die logische folge. Besser den Fehler dort generieren wo er entsteht und nicht erst später.
 
Wieder wäre DOM eine Lösung. Die andere Funktion hab ich schnell von stackoverflow geklaut:

PHP:
<?php

$url = 'http://www.almhof-kirchberg.com';

function getImageSizes($url) {
	libxml_use_internal_errors(true); // Don't display validation errors

	$doc = new DOMDocument();
	$doc->loadHTMLFile($url); // Get the contents
	
	$sizes = array(); // Return array

	$elements = $doc->getElementsByTagName('img');
	foreach ($elements as $element) {
		$sizes[] = retrieve_remote_file_size($element->getAttribute('src'));
	}
	return $sizes;
}

function retrieve_remote_file_size($url){ 
     $ch = curl_init($url); 

     curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
     curl_setopt($ch, CURLOPT_HEADER, TRUE); 
     curl_setopt($ch, CURLOPT_NOBODY, TRUE); 

     $data = curl_exec($ch); 
     $size = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD); 

     curl_close($ch); 
     return $size; 
}

var_dump(getImageSizes($url));

Code:
array(28) { [0]=> float(183893) [1]=> float(16174) [2]=> float(23177) [3]=> float(796) [4]=> float(3451) [5]=> float(3358) [6]=> float(1426) [7]=> float(-1) [8]=> float(3088) [9]=> float(3523) [10]=> float(2352) [11]=> float(-1) [12]=> float(5659) [13]=> float(-1) [14]=> float(5483) [15]=> float(16725) [16]=> float(0) [17]=> float(11722) [18]=> float(7166) [19]=> float(11268) [20]=> float(10736) [21]=> float(-1) [22]=> float(-1) [23]=> float(-1) [24]=> float(-1) [25]=> float(-1) [26]=> float(-1) [27]=> float(-1) }
 
Zurück