Полезные функции PHP: Игры с представлениями размеров файлов
В этой заметке приведены две функции:
- для превращения размера в байтах в кило-, мега-, гига- и терабайты.
- для конвертации "человеческого" представления размеров файлов (н-р 10 MB, 200.20 GB) в байты
Функция formatBytes() принимает в качестве входных параметров число байт и точность округления (число знаков после запятой, по умолчанию 2), определяет размерность в "человеческом" представлении и возвращает строку типа "200.20 GB"
function formatBytes($bytes, $precision = 2) { $units = array('B', 'KB', 'MB', 'GB', 'TB'); $bytes = max($bytes, 0); $pow = floor(($bytes ? log($bytes) : 0) / log(1024)); $pow = min($pow, count($units) - 1); $bytes /= pow(1024, $pow); return round($bytes, $precision) . ' ' . $units[$pow]; } |
Функция filesize2bytes() принимает в качестве входных параметров строку вида, например, 200.20 GB и возвращает соответствующее число байт.
function filesize2bytes($str) { $bytes = 0; $bytes_array = array( 'B' => 1, 'KB' => 1024, 'MB' => 1024 * 1024, 'GB' => 1024 * 1024 * 1024, 'TB' => 1024 * 1024 * 1024 * 1024, 'PB' => 1024 * 1024 * 1024 * 1024 * 1024, ); $bytes = floatval($str); if (preg_match('#([KMGTP]?B)$#si', $str, $matches) && !empty($bytes_array[$matches[1]])) { $bytes *= $bytes_array[$matches[1]]; } $bytes = intval(round($bytes, 2)); return $bytes; } |