Demogracia Bits

• • • Colección privada de recortes de código y documentación para programación web

[Sí, aún estamos en pruebas; ¿por?]

Bytes en formato legible

Esta función permite convertir de bytes a KB, MB, GB... y dar formato al número resultante.

/*
 * Recibe una cantidad en bytes y devuelve una cadena en formato legible
 */

function bytes2txt($tamano, $decimales=2, $separador_decimal=',', $separador_miles='.'){ // v2008-04-23
    $unidades = array('B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB');

    for($i=0, $len=count($unidades)-1; $i<$len && $tamano>=1024; $i++){
        $tamano /= 1024;
    }

    $tamano = round($tamano, $decimales);
    $decimales = ((int)$tamano==$tamano) ? 0 : $decimales; // Si es entero no mostramos decimales

    return number_format($tamano, $decimales, $separador_decimal, $separador_miles) . ' ' . $unidades[$i];
}

El primer argumento es el tamaño en bytes. El resto son opcionales y permiten controlar cómo se mostrará la cifra.

La lista de unidades se ha tomado del artículo sobre «Byte» de la Wikipedia en español así que es probable que sea correcta.

Recordamos a nuestros amables lectores que la función de PHP para averiguar el tamaño de un archivo es filesize().

Ejemplo

Antes:
406951191
Después:
388,10 MB

No hay color.

Historial

v2008-04-23
Arreglos cosméticos y pequeña optimización en el bucle.
v2007-05-05
Primera versión.

Esta página ha sido impresa el domingo 6 de julio de 2008 (22:51:30 +0200) desde http://bits.demogracia.com/recortes/php/bytes-legibles.html, contenía HTML válido con CSS fresquito la última vez que lo miré y no debería tener flatas de ortografía.

Demogracia Bits no tiene absolutamente ninguna relación con Demogracia, salvo el nombre, el dominio punto com y que el autor es el mismo.

© 2005-2008 by Álvaro G. Vicario (alvaro.es) ¤ Burgos (España) ¤ http://bits.demogracia.com/