Vladson, я исправил выше посмотри мой пост. PHP: print sizeToStr(1024*1024*1024*1024*1024*1024*1024*1024*1024*1024); Код (Text): 1048576 Йб
Большое спасибо Вам Vladson Код (Text): <?php //Переменные $quota = "102400000"; $dir = "Z:\home\localhost\admin_by_dobs\php"; $lang_total = "<b>Total files</b>"; $lang_total = "<b>Total directories</b>"; $lang_files = "files"; $lang_directories = "directories"; $lang_used = "Использовано"; function get_size($dir) { $speicher = 0; $dateien = 0; $verz = 0; if ($handle = @opendir($dir)) { while ($file = readdir($handle)) { if($file != "." && $file != "..") { if(@is_dir($dir."/".$file)) { $wert = get_size($dir."/".$file); $speicher += $wert[2]; $dateien += $wert[0]; $verz += $wert[1]; $verz++; } else { $speicher += @filesize($dir."/".$file); $dateien++; } } } closedir($handle); } $zurueck[0] = $dateien; $zurueck[1] = $verz; $zurueck[2] = $speicher; return $zurueck; } $array = get_size($dir); echo"<font size=2><br><br> <b>".$lang_total." ".$lang_files."</b> - ".$array[0]." ".$lang_files."<br> <b>".$lang_total." ".$lang_directories."</b> - ".$array[1]." ".$lang_directories."<br></font>"; function _formatSize($size = 0) { if ($size >= 1073741824) $size = round($size/1073741824*100)/100 . " Gb"; else if ($size >= 1048576) $size = round($size/1048576*100)/100 . " Mb"; else if ($size >= 1024) $size = round($size/1024*100)/100 . " kb"; else $size = $size . " bytes"; return $size; } echo _formatSize($array[2]); ?>
много всего!!! Ну просто до кучи: PHP: function to_Size($rSize){ if(round($rSize/1024)<=0)return $rSize.' b'; if(round($rSize/(1024*1024))<=0)return round(($rSize/1024),2).' Kb'; if(round($rSize/(1024*1024*1024))<=0)return round(($rSize/(1024*1024)),2).' Mb'; if(round($rSize/(1024*1024*1024*1024))<=0)return round(($rSize/(1024*1024*1024)),2).' Gb'; }
$_size=number_format(ПЕРЕМЕННАЯ С РАЗМЕРОМ/(1024), 1, ',', ' '); $_size получается в KB $_size=number_format(ПЕРЕМЕННАЯ С РАЗМЕРОМ/(1024*1024), 1, ',', ' '); $_size получается в MB И тд....
Двоешники =)) PHP: <?php define('BYTES_AS_IS',0); define('BYTES_AS_KB',1); define('BYTES_AS_MB',2); define('BYTES_AS_GB',3); define('BYTES_AS_TB',4); function ToSize($size,$dim = BYTES_AS_IS,$round=true,$prec=2) { $val = $size/(pow(1024,$dim)); return ($round)?(round($val,$prec)):$val; } ?>
Горбунов Олег нужно автоматическое определение диапазона, чтобы число не вышло за пределы от 1 до 1024.
хы. PHP: <?php /* - константы размерностей - */ define('BYTES_AS_IS',0); define('BYTES_AS_KB',1); define('BYTES_AS_MB',2); define('BYTES_AS_GB',3); define('BYTES_AS_TB',4); define('BYTES_AS_PB',5); /* - суффиксы размерностей - */ define('BYTES_PREFIX_0',' bytes'); define('BYTES_PREFIX_1',' Kbytes'); define('BYTES_PREFIX_2',' Mbytes'); define('BYTES_PREFIX_3',' Gbytes'); define('BYTES_PREFIX_4',' Tbytes'); define('BYTES_PREFIX_5',' Pbytes'); function BytesToSize($size,$dim = BYTES_AS_IS,$round=true,$prec=2) { $val = $size/(pow(1024,$dim)); return ($round)?(round($val,$prec)):$val; } function BytesAutoSize($size,$named=true,$round=true,$prec=2) { $i = 0; $ch = $size; while ($ch>=1024) { $ch/=1024; $i++; } $newSize = BytesToSize($size,$i,$round,$prec); return (!$named)?$newSize:$newSize.constant('BYTES_PREFIX_'.$i); } ?>