Время для прочтения: 1 мин. 18 сек.

Форматирование строки с размером файла

Очень часто возникает необходимость рядом со ссылкой на файл вывести его размер в человекопонятном формате с указанием приставки по системе СИ

Собственно, сама функция


<?php
/*
 * Форматируем строку с размеров файла
 */
function formatSize($size) {
    $units = array(' Б', ' Кб', ' Мб', ' Гб', ' Тб');
    for ($i = 0; $size >= 1024 && $i < 4; $i++) $size /= 1024;
    return round($size, 2).$units[$i];
}
?>

Использовать можно примерно так:


<?php
$filename = '/path/to/file';

if (is_file($filename)) {
    printf(
        "Размер вашего файла %s: %s", 
         basename($filename), 
         formatSize(filesize($filename))
    );
}
?>

Другой вариант

Спасибо пользователю Ostin за наводку.


function formatSize($size) {
    $filesizename = array(
        " Bytes", " KB", " MB", " GB", " TB", 
        " PB", " EB", " ZB", " YB"
    );
    return $size 
        ? round($size/pow(1024, ($i = floor(log($size, 1024)))), 2) . $filesizename[$i] 
        : '0 ' . $filesizename[0];
}

Ссылки

Для вставки кода используйте HTML-теги
<pre><code class="php">ваш код</code></pre>