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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Вывод размер в КБ, МБ, ГБ

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
Seodaiter
Отправлено: 17 Сентября, 2009 - 16:28:36
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Сент. 2009  


Помог: 0 раз(а)




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 размер файла

Эта функция приставляет приставки кило мега к размеру файла в байтах и выводит размер.
 
 Top
Ch_chov
Отправлено: 17 Сентября, 2009 - 16:43:24
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




Мне ещё ни разу не приходилось работать с эксабайтами.

З.Ы. Функция не рабочая.

(Отредактировано автором: 17 Сентября, 2009 - 17:35:09)

 
 Top
Champion Супермодератор
Отправлено: 18 Сентября, 2009 - 08:37:29
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Seodaiter пишет:
'Тб', 'Пб', 'Эб');
Часто файлы такого размера встречал?
 
 Top
Viper
Отправлено: 18 Сентября, 2009 - 08:40:57
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




зачем изобретать велосипед ? http://ua2.php.net/manual/en/fun...lesize.php#92418


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
bublik20
Отправлено: 29 Октября, 2011 - 12:55:11
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Окт. 2011  


Помог: 0 раз(а)




Рабочая функция, исправленная
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.  
 
 Top
Самогонщик
Отправлено: 29 Октября, 2011 - 13:11:28
Post Id



Посетитель


Покинул форум
Сообщений всего: 495
Дата рег-ции: Окт. 2011  


Помог: 8 раз(а)




Два вопроса:
1. Что если пользователь указал неправильный тип?
2. Что если размер более Эксабайта?

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

Спойлер (Отобразить)
 
 Top
ADIOS
Отправлено: 12 Апреля, 2012 - 18:53:02
Post Id



Гость


Покинул форум
Сообщений всего: 96
Дата рег-ции: Май 2010  
Откуда: Россия, Калуга


Помог: 2 раз(а)




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.  }


а так еще проще


-----
Не откладывай работу на завтра, от которой можно вообще отказаться
 
 Top
Bio man
Отправлено: 12 Апреля, 2012 - 19:27:27
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




В добавок прочтите вот это двоичные приставки и поймете почему 1MB === 1000KB а не 1024 Радость но щас стандарт де факто именно то что вы подразумеваете.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Пользовательские функции »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB