Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Вывод размер в КБ, МБ, ГБ
Форумы портала PHP.SU » PHP » Пользовательские функции » Вывод размер в КБ, МБ, ГБ

Страниц (1): [1]
 

1. Seodaiter - 17 Сентября, 2009 - 16:28:36 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. function f_bafsize($size, $type) {
  4.  
  5.  //устанавливаем конфигурацию вывода приставок, надеюсь разберетесь
  6.  
  7. if ($loc == 0) {
  8.  
  9. $iec = array('байт', 'Килобайт', 'Мегабайт', 'Гигабайт', 'Терабайт', 'Петабайт', 'Эксабайт');
  10.  
  11. }
  12.  
  13. if ($loc == 1) {
  14.  
  15. $iec = array('б', 'Кб', 'Мб', 'Гб', 'Тб', 'Пб', 'Эб');
  16.  
  17. }
  18.  
  19. if ($loc == 2) {
  20.  
  21. $iec = array('B','KB','MB','GB','TB','PB','EB');
  22.  
  23. }
  24.  
  25. $i = 0;
  26.  
  27. while (($size/1024)>1) {
  28.  
  29. $size = $size/1024;
  30.  
  31. $i++;
  32.  
  33. }
  34.  
  35. //Определяем какую приставку надо ставить
  36.  
  37. $iec = strpos($iec, '.');//Убираем все после плавающей запятой
  38.  
  39. $echo = $size.' '.$iec;//Формируем вывод
  40.  
  41. return $echo;
  42.  
  43. }
  44.  
  45. echo f_bafsize(1024, 1);//Выведет 1 Кб
  46.  
  47. echo f_bafsize(1024, 0);//Выведет 1 Килобайт
  48.  
  49. echo f_bafsize(1024, 2);//Выведет 1 KB
  50.  
  51. ?>


Источник: php размер файла

Эта функция приставляет приставки кило мега к размеру файла в байтах и выводит размер.
2. Ch_chov - 17 Сентября, 2009 - 16:43:24 - перейти к сообщению
Мне ещё ни разу не приходилось работать с эксабайтами.

З.Ы. Функция не рабочая.
3. Champion - 18 Сентября, 2009 - 08:37:29 - перейти к сообщению
Seodaiter пишет:
'Тб', 'Пб', 'Эб');
Часто файлы такого размера встречал?
4. Viper - 18 Сентября, 2009 - 08:40:57 - перейти к сообщению
зачем изобретать велосипед ? http://ua2.php.net/manual/en/fun...lesize.php#92418
5. bublik20 - 29 Октября, 2011 - 12:55:11 - перейти к сообщению
Рабочая функция, исправленная
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. function f_bafsize($size, $type=0) {
  3.         //устанавливаем конфигурацию вывода приставок, надеюсь разберетесь
  4.         if ($type == 0) {
  5.                 $iec = array('байт', 'Килобайт', 'Мегабайт', 'Гигабайт', 'Терабайт', 'Петабайт', 'Эксабайт');
  6.         }
  7.         if ($type == 1) {
  8.                 $iec = array('б', 'Кб', 'Мб', 'Гб', 'Тб', 'Пб', 'Эб');
  9.         }
  10.         if ($type == 2) {
  11.                 $iec = array('B','KB','MB','GB','TB','PB','EB');
  12.         }
  13.         $i = 0;
  14.         while (($size/1024)>1) {
  15.                 $size = $size/1024;
  16.                 $i++;
  17.         }
  18.         $echo = round($size).' '.$iec[$i];
  19.         return $echo;
  20. }
  21.  
6. Самогонщик - 29 Октября, 2011 - 13:11:28 - перейти к сообщению
Два вопроса:
1. Что если пользователь указал неправильный тип?
2. Что если размер более Эксабайта?

Напомнило вот это

Спойлер (Отобразить)
7. ADIOS - 12 Апреля, 2012 - 18:53:02 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. function format_size($size){
  2.      $metrics[0] = 'байт';
  3.      $metrics[1] = 'KB';
  4.      $metrics[2] = 'MB';
  5.      $metrics[3] = 'GB';
  6.      $metrics[4] = 'TB';
  7.      $metric = 0;
  8.      while(floor($size/1024) > 0){
  9.          ++$metric;
  10.          $size /= 1024;
  11.      }
  12.      $ret =  round($size,1)." ".(isset($metrics[$metric])?$metrics[$metric]:'??');
  13.      return $ret;
  14.  }


а так еще проще
8. Bio man - 12 Апреля, 2012 - 19:27:27 - перейти к сообщению
В добавок прочтите вот это двоичные приставки и поймете почему 1MB === 1000KB а не 1024 Радость но щас стандарт де факто именно то что вы подразумеваете.

 

Powered by ExBB FM 1.0 RC1