Tag-Archiv für » funktion «

Verzeichnis rekursiv auslesen (mit Dateigröße)

Friday, 12. September 2008 17:07

Ein Verzeichnis rekursiv mit PHP auszulesen bedarf es nicht viel.

Hier habe ich ein beispiel mit lediglich 3 kleinen Funktionen.

  • Die Erste gibt eine lesbare Dateigröße aus
  • Die zweite Funktion definiert, wie die Dateien angezeigt werden sollen
  • Die Dritte Liest die Ordner aus und ruft gegebenenfalls Sich slebst mit neuem Parameter auf
function byteConvert($bytes){
	$symbol = array('B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB');
	$exp = 0;
	$converted_value = 0;
	if( $bytes > 0 ){
		$exp = floor( log($bytes)/log(1000) );
		$converted_value = ( $bytes/pow(1000,floor($exp)) );
	}
	return sprintf( '%.2f '.$symbol[$exp], $converted_value );
}
function file_detail($dir,$name){
	$stat = @stat($dir.$name);
	#print_r($stat);
	$returner .= "<td>$name</td>";
	$returner .= "<td>".byteConvert($stat['size'])."</td>";
	return $returner;
}
function rec_scan_dir($dir){
	$returner = "<table>\n";
	$files = scandir( $dir );
	sort($files);
	foreach($files as $file){
		if( $file!="." && $file!=".."){
			if(is_dir($dir.$file)){
				$returner .= "<tr><td class='dir'>$file</td></tr>\n";
				$returner .= "<tr><td><div class='dir_pad' style='padding-left:10px;'>".rec_scan_dir($dir.$file)."</div></td></tr>\n";
			}
			else{
				$returner .= "<tr>";
				$returner .= file_detail($dir,$file);
				$returner .= "</tr>\n";
			}
		}
	}
	$returner .= "</table>\n";
	return $returner;
}
 
$dir = './files/';
echo "<h1>$dir</h1>";
print_r(rec_scan_dir($dir));

Thema: PHP | Kommentare (0) | Autor: Simon