borrame.com - Colección particular de recortes de código y documentación para programación web

Lo más fresco

  1. LPAD en SQL Server Nuevo
  2. Eliminar todos los objetos en SQL Server Modificado
  3. Dominio principal Nuevo
  4. Eliminar formato en Excel Nuevo

Sugerencias del chef

Lo más visitado

  1. Dar formato a un número
  2. Campo autonumérico
  3. Fecha y hora
  4. Cookies
  5. Convertir IP entre cadena y número

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 jueves 11 de marzo de 2010 (20:54:07 +0100) desde http://borrame.com/recortes/php/bytes-legibles.html. La última vez que miré contenía HTML válido con CSS fresquito y si tiene flatas de ortografía ha sido sin querer.

borrame.com es el sitio anteriormente conocido como bits.demogracia.com (no confundir con Demogracia, que sólo pasaba por ahí).

© 2005-2010 by Álvaro G. Vicario (alvaro.es) • Burgos (España) • borrame.com