Функция форматирующая размеры в МБ, КБ и т.д.

Духовность™

Продвинутый новичок
Функция форматирующая размеры в МБ, КБ и т.д.

В PHP конфигурацию можно указывать как 3M , например
php_value post_max_size 4M
php_value upload_max_filesize 3M
php_value max_file_uploads 3
а функции есть встроенные для работы с подобными видами настроек? Мне нужно через ini_get получить скажем upload_max_filesize и вывести его красиво.
 

dimagolov

Новичок
откуда-то из каментов на php.net взял такой код:
PHP:
function return_bytes($val) {
    $val= trim($val);
    if (!$val) return NULL;
    $last= strtolower($val{strlen($val)-1});
    switch($last) {
        // The 'G' modifier is available since PHP 5.1.0
        case 'g':
            $val *= 1024;
        case 'm':
            $val *= 1024;
        case 'k':
            $val *= 1024;
    }

    return $val;
}
 

zerkms

TDD infected
Команда форума
dimagolov
функция-то кривая - множители одинаковые )
да и break'ов нет
 

Духовность™

Продвинутый новичок
dimagolov спасибо.

вот я ламер позорный, я даже и не знал, что у свитча такое поведение))))
 

dimagolov

Новичок
zerkms, в том то весь и прикол :) проверь сам и перечитай ман по switch ;)
 

zerkms

TDD infected
Команда форума
dimagolov
понял, да ) я в последнее время как-то на C# больше, а там такой код тупо не скомпилится :-S
 

Духовность™

Продвинутый новичок
я вот написал "обратную" функцию для человеческого восприятия:
PHP:
    /**
     * Форматирует количество байтов в человекопонятные единицы
     * измерения информации.
     *
     * @param int количество байтов
     * @param string
     */
    public static function createPhpFormatBytes($val)
    {
        $store = array('B', 'kB', 'MB', 'GB', 'TB');

        for ($i=0, $j = 1024; $val >= $j; $val = $val/$j, $i++);

        return sprintf('%.1f', round($val,2)).(isset($store[$i]) ? $store[$i] : '');
    }
- это правильно?
 

tz-lom

Продвинутый новичок
перелёт не обрабатывается
echo createPhpFormatBytes(100000000000000000);
 

Духовность™

Продвинутый новичок
петабайты? Тогда так:

PHP:
    /**
     * Форматирует количество байтов в человекопонятные единицы
     * измерения информации.
     *
     * @param int количество байтов
     * @param string
     */
    public static function createPhpFormatBytes($val)
    {
        $store = array('B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB', 'ДХЯ');

        for ($i=0, $j = 1024; $val >= $j; $val = $val/$j, $i++);

        return sprintf('%.1f', round($val,2)).(isset($store[$i]) ? $store[$i] : $store[count($store)-1]);
    }
последний параметр $store можете заменить по своему усмотрению ))
 

craz

Нестандартное звание
че за цирк)) файл размером в 'PB', 'EB', 'ZB', 'YB'
при загрузке на сервер,


вы де берете такую траву?
 
Сверху