PHP: ¿Cómo dar formato de salida (Kb, Mb, Gb) a la funcion filesize() y con la precision que yo quiera?

De Foros del Web

Código PHP:

function tam_arch($tam,$pre){
    if($pre==0){
        $pre=-1;
    }else if($pre<0){
        $pre=2;
    }
    $tam/=1024;
    if($tam>1048576){
        $tam_a=$tam;
        $tam_a/=1048576;
        if($tam_a>1000){
            $tam_a=substr($tam_a,0,5+$pre)." GB.";
        }else if($tam_a>100){
            $tam_a=substr($tam_a,0,4+$pre)." GB.";
        }else if($tam_a>10){
            $tam_a=substr($tam_a,0,3+$pre)." GB.";
        }else{
            $tam_a=substr($tam_a,0,2+$pre)." GB.";
        }
    }else if($tam>1024){
        $tam_a=$tam;
        $tam_a/=1024;
        if($tam_a>1000){
            $tam_a=substr($tam_a,0,5+$pre)." MB.";
        }else if($tam_a>100){
            $tam_a=substr($tam_a,0,4+$pre)." MB.";
        }else if($tam_a>10){
            $tam_a=substr($tam_a,0,3+$pre)." MB.";
        }else{
            $tam_a=substr($tam_a,0,2+$pre)." MB.";
        }
    }else{
        $tam_a=$tam;
        if($tam_a>1000){
            $tam_a=substr($tam_a,0,5+$pre)." KB.";
        }else if($tam_a>100){
            $tam_a=substr($tam_a,0,4+$pre)." KB.";
        }else if($tam_a>10){
            $tam_a=substr($tam_a,0,3+$pre)." KB.";
        }else{
            $tam_a=substr($tam_a,0,2+$pre)." KB.";
        }
    }
    return $tam_a;
}  

la salida sera dependiendo del tamaño y precisión con que se haya configurado, lo normal es que sea 12 decimales de precisión la salida de la función arroja algo como esto 123.45KB , 12.34MB, 123.345.GB.

como se usa??

Código PHP:

$tam_a=filesize('./galerias/imagen.jpg');
$pre=2;
$tam=tam_arch($tam_a,$pre);  


La variable $tam ya estará formateada

por ejemplo

precisión 0: 1 KB o 1 MB 1 GB

precisión 1: 12.3 KB o 123.2 MB o 1.2G B

precisión 2: 12.12 KB o 123.45 MB o 12.12 GB



--The_dark_roy 27 May 2005

Este artículo es parte de las FAQs de PHP y el Manual de PHP.

Herramientas personales