Функция SIZE_FORMAT() в WordPress
Функция size_format() позволяет преобразовать количество байтов в удобочитаемый формат. Например, вместо того чтобы видеть 1024 байта, вы увидите 1 КБ, а вместо 1048576 байт — 1 МБ. Таким образом, чтение информации становится более комфортным.
Примечание: В PHP целые числа (integer) ограничены 32 битами, если они не используются на 64-битной архитектуре, где они могут иметь размер 64 бита. Если вам нужно работать с числами больше, чем может хранить целое число PHP, используйте строку. Она будет преобразована в число с плавающей запятой (double), который всегда имеет длину 64 бита.
Технически корректные названия единиц измерения для степеней 1024 - это KiB, MiB и так далее.
Использование функции
Функция size_format() вызывает другую функцию для форматирования чисел в зависимости от локализации: number_format_i18n().
Время выполнения:
- 1 раз: 0.000025 сек (очень быстро)
- 50000 раз: 0.11 сек (по-прежнему быстро)
- Версия PHP: 7.0.8, версия WP: 4.6
Возврат результата
Функция возвращает либо строку с числом, либо false в случае ошибки.
Синтаксис
size_format( $bytes, $decimals );
- $bytes (int|string) (обязательный параметр): количество байтов. Учтите максимальный размер для целых чисел.
- $decimals (int): точность числа десятичных знаков.
Примеры использования
Вот несколько примеров использования функции size_format():
echo size_format( 99 ); // Вывод: 99 B
echo size_format( 9999 ); // Вывод: 10 KB
echo size_format( '9999' ); // Вывод: 10 KB
echo size_format( 9999, 2 ); // Вывод: 9,76 KB
echo size_format( 9999999 ); // Вывод: 10 MB
echo size_format( 9999999999 ); // Вывод: 9 GB
echo size_format( 9999999999999 ); // Вывод: 9 TB
Пример отображения размера файла в удобочитаемом формате
$file_size = 1229; // размер файла в байтах
echo size_format( $file_size, 2 ); // Вывод: 1.20 KB
Изменения в истории версий
- С версии 2.3.0 — функция была внедрена.
- С версии 6.0.0 — добавлена поддержка для PB (петабайты), EB (эксабайты), ZB (зеттабайты) и YB (йоттабайты).
Код функции
Ниже приведен исходный код функции size_format из файла wp-includes/functions.php:
function size_format( $bytes, $decimals = 0 ) {
$quant = array(
_x( 'YB', 'unit symbol' ) => YB_IN_BYTES,
_x( 'ZB', 'unit symbol' ) => ZB_IN_BYTES,
_x( 'EB', 'unit symbol' ) => EB_IN_BYTES,
_x( 'PB', 'unit symbol' ) => PB_IN_BYTES,
_x( 'TB', 'unit symbol' ) => TB_IN_BYTES,
_x( 'GB', 'unit symbol' ) => GB_IN_BYTES,
_x( 'MB', 'unit symbol' ) => MB_IN_BYTES,
_x( 'KB', 'unit symbol' ) => KB_IN_BYTES,
_x( 'B', 'unit symbol' ) => 1,
);
if ( 0 === $bytes ) {
return number_format_i18n( 0, $decimals ) . ' ' . _x( 'B', 'unit symbol' );
}
foreach ( $quant as $unit => $mag ) {
if ( (float) $bytes >= $mag ) {
return number_format_i18n( $bytes / $mag, $decimals ) . ' ' . $unit;
}
}
return false;
}
Функция size_format() позволяет разработчикам легко преобразовывать размер файлов в более удобный для восприятия формат, что делает её полезной для любых приложений, работающих с файлами в WordPress.