Dateigröße darstellen

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.