| Dateigröße von Byte in kB, MB, GB umwandeln |
Dateigröße in lesbares Format umwandelnFrüher oder später benötigt jeder PHP Programmierer mal einen Weg, mit dem man eine Dateigröße, die ja bekanntlich in Byte ausgelesen wird, in ein von Menschen gut lesbares Format umgewandeln kann. Sucht man im Web nach einer passenden Lösung, findet man die abstrusesten und teilweise kompliziertesten mathematischen Formeln, nicht selten in rekursive arbeitende Schleifen verpackt, um einen Byte Wert in Kilobyte, Megabyte oder Gigabyte umzurechnen. Die Funktion zum konvertieren von Byte Werte: function convertFileSize( $size, $type = 'byte', $decimal = 2 ) { $size = intval( $size ); switch ($type) { case 'kb': return round( ($size / pow( 1024, 1 )), $decimal ); break; case 'mb': return round( ($size / pow( 1024, 2 )), $decimal ); break; case 'gb': return round( ($size / pow( 1024, 3 )), $decimal ); break; default: return $size; break; } } Anwendungsbeispiele: // Dateigröße $size = 30283277; // Gibt aus: 29573.51 kB echo convertFileSize( $size, 'kb', 2 ) . " kB"; // Gibt aus: 28.88 MB echo convertFileSize( $size, 'mb', 3 ) . " MB"; // Gibt aus: 0.028 GB echo convertFileSize( $size, 'gb', 3 ) . " GB"; Die Funktion erwartet 3 Parameter, wovon 2 optional sind. Übergeben werden muss die Größe in Byte. Der 2. Parameter bestimmt das Ausgabeformat "kb" für Kilobyte, "mb" für Megabyte, "gb" für Gigabyte. Bei anderen Angaben wird die Größe in Byte zurückgegeben. (Standard). Der 3. Parameter bestimmt die Nachkommastellen, Standard sind 2 Stellen. Wie wir hier am kB Wert sehen, lässt sich der ein wenig schwer lesen. Um diesen Wert in ein gängiges Deutsches Format umzuwandeln, mit Tausendertrennzeichen und die Dezimalstelle als Komma statt Punkt, benutzt man die PHP Funktion number_format. // Gibt aus: 29.573,51 kB echo number_format( convertFileSize( $size, 'kb', 2 ), 2, ',', '.' ) . " kB"; Ich hoffe, die Funktion ist dem ein oder anderen mal nützlich. :-) Bis zum nächsten Mal, Beispiel herunterladen (1 kB) |