Очень часто возникает необходимость рядом со ссылкой на файл вывести его размер в человекопонятном формате с указанием приставки по системе СИ
Собственно, сама функция
/*
* Форматируем строку с размеров файла
*/
function formatSize($size) {
$units = array(' Б', ' Кб', ' Мб', ' Гб', ' Тб');
for ($i = 0; $size >= 1024 && $i < 4; $i++) {
$size /= 1024;
}
return round($size, 2).$units[$i];
}
Использовать можно примерно так:
$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];
}
Ссылки
Источник: https://www.kobzarev.com/programming/formatting-a-string-with-the-file-size/