Mit Hilfe der folgenden kleinen Funktion können Dateigrößen, die in der Regel als Bytezahl geliefert werden, einfach als lesbare Einheit ausgegeben werden:
public function formatBytes($size,$level=0,$base=1024) { $unit = array('B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB','YB'); $times = floor(log($size,$base)); return sprintf("%.2f",$size/pow($base,($times+$level)))." ".$unit[$times+$level]; }
So werden dann z.B. "5456789"
als "5.20 MB"
dargestellt. Über den Parameter $level
kann noch die Einheitebene verschoben werden. So werden dann mit $level = -1
"5456789"
als "5328.90 kB"
ausgegeben. Über $base kann dann noch angegeben werden ob mit 1000 oder 1024 als Basis für die nächste Einheitebene gerechnet wird.