PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Без описания
Поиск в теме | Версия для печати
Seodaiter
Отправлено: 17 Сентября, 2009 - 16:28:36
Новичок
Покинул форум
Сообщений всего: 8
Дата рег-ции: Сент. 2009
Помог: 0 раз(а)
PHP:
скопировать код в буфер обмена
<?PHP
function f_bafsize( $size , $type ) {
//устанавливаем конфигурацию вывода приставок, надеюсь разберетесь
if ( $loc == 0) {
$iec = array ( 'байт' , 'Килобайт' , 'Мегабайт' , 'Гигабайт' , 'Терабайт' , 'Петабайт' , 'Эксабайт' ) ;
}
if ( $loc == 1) {
$iec = array ( 'б' , 'Кб' , 'Мб' , 'Гб' , 'Тб' , 'Пб' , 'Эб' ) ;
}
if ( $loc == 2) {
$iec = array ( 'B' , 'KB' , 'MB' , 'GB' , 'TB' , 'PB' , 'EB' ) ;
}
$i = 0 ;
while ( ( $size / 1024) > 1) {
$size = $size / 1024 ;
$i ++;
}
//Определяем какую приставку надо ставить
$iec = strpos ( $iec , '.' ) ; //Убираем все после плавающей запятой
$echo = $size . ' ' . $iec ; //Формируем вывод
return $echo ;
}
echo f_bafsize( 1024, 1) ; //Выведет 1 Кб
echo f_bafsize( 1024, 0) ; //Выведет 1 Килобайт
echo f_bafsize( 1024, 2) ; //Выведет 1 KB
?>
Источник: php размер файла
Эта функция приставляет приставки кило мега к размеру файла в байтах и выводит размер.
Ch_chov
Отправлено: 17 Сентября, 2009 - 16:43:24
Постоянный участник
Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008
Откуда: из города
Помог: 90 раз(а)
Мне ещё ни разу не приходилось работать с эксабайтами.
З.Ы. Функция не рабочая.
(Отредактировано автором: 17 Сентября, 2009 - 17:35:09)
bublik20
Отправлено: 29 Октября, 2011 - 12:55:11
Новичок
Покинул форум
Сообщений всего: 1
Дата рег-ции: Окт. 2011
Помог: 0 раз(а)
Рабочая функция, исправленная
CODE (
htmlphp ):
скопировать код в буфер обмена
function f_bafsize( $size , $type = 0 ) {
//устанавливаем конфигурацию вывода приставок, надеюсь разберетесь
if ( $type == 0) {
$iec = array ( 'байт' , 'Килобайт' , 'Мегабайт' , 'Гигабайт' , 'Терабайт' , 'Петабайт' , 'Эксабайт' ) ; }
if ( $type == 1) {
$iec = array ( 'б' , 'Кб' , 'Мб' , 'Гб' , 'Тб' , 'Пб' , 'Эб' ) ; }
if ( $type == 2) {
$iec = array ( 'B' , 'KB' , 'MB' , 'GB' , 'TB' , 'PB' , 'EB' ) ; }
$i = 0 ;
while ( ( $size / 1024) > 1) {
$size = $size / 1024 ;
$i ++;
}
$echo = round ( $size ) . ' ' . $iec [ $i ] ; return $echo ;
}
Самогонщик
Отправлено: 29 Октября, 2011 - 13:11:28
Посетитель
Покинул форум
Сообщений всего: 495
Дата рег-ции: Окт. 2011
Помог: 8 раз(а)
Два вопроса:
1. Что если пользователь указал неправильный тип?
2. Что если размер более Эксабайта?
Напомнило
вот это
Спойлер (Отобразить ) Ковыряю исходник:
if (!shift)
str+=" B/s";
else if (shift==1)
str+=" KB/s";
else if (shift==2)
str+=" MB/s";
else if (shift==3)
str+=" GB/s";
else if (shift==4)
str+=" TB/s";
else
str="n/a"; // If this happens, you really have a fast connection
ADIOS
Отправлено: 12 Апреля, 2012 - 18:53:02
Гость
Покинул форум
Сообщений всего: 96
Дата рег-ции: Май 2010
Откуда: Россия, Калуга
Помог: 2 раз(а)
PHP:
скопировать код в буфер обмена
function format_size( $size ) {
$metrics [ 0 ] = 'байт' ;
$metrics [ 1 ] = 'KB' ;
$metrics [ 2 ] = 'MB' ;
$metrics [ 3 ] = 'GB' ;
$metrics [ 4 ] = 'TB' ;
$metric = 0 ;
while ( floor ( $size / 1024
) > 0
) { ++ $metric ;
$size /= 1024 ;
}
$ret = round ( $size , 1 ) . " " . ( isset ( $metrics [ $metric ] ) ?
$metrics [ $metric ] : '??' ) ; return $ret ;
}
а так еще проще
-----Не откладывай работу на завтра, от которой можно вообще отказаться
Bio man
Отправлено: 12 Апреля, 2012 - 19:27:27
Постоянный участник
Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010
Откуда: Даугавпилс, Латвия
Помог: 52 раз(а)
В добавок прочтите вот это
двоичные приставки и поймете почему 1MB === 1000KB а не 1024
но щас стандарт де факто именно то что вы подразумеваете.
Поиск в теме | Версия для печати
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Пользовательские функции »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB