<?php
function human_filesize($size, $precision = 2)
{
$a_size = array('B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB');
$count = count($a_size) - 1;
$i = 0;
while ($size / 1024 >= 1 && $count >= $i) {
$size = $size / 1024;
$i++;
}
return round($size, $precision) . ' ' . $a_size[$i];
}
// =========
// ANWENDUNG
// =========
// Ausgabe zum Beispiel: 34.35 MiB
echo human_filesize(filesize('datei.zip'));
// Ausgabe zum Beispiel: 34 MiB
echo human_filesize(filesize('datei.zip'), 0);
// Ausgabe zum Beispiel: 34.35465 MiB
echo human_filesize(filesize('datei.zip'), 5);
?>
Diese Funktion ermittelt automatisch die geeignete Einheit und rechnet die Dateigrösse in diese um. Über den zweiten optionalen Parameter kann man die Anzahl Dezimalstellen steuern (siehe Beispiele).
Masseinheiten: Warum KiB und nicht KB?
KiB ist die Abkürzung für Kilo-binary Byte oder KibiByte.
Strenggenommen ist eine Dateigrössen-Angabe in kB (103 = 1000 Byte) falsch, denn gemeint damit sind 1024 Byte (= 210 Byte). Standard konform wäre also die Verwendung von Binärpräfixen wie Kib, MiB, GiB, usw. Leider wird meist trotzdem die falsche Einheit gewählt.