size_format() WP 2.3.0

Конвертує байти у зрозумілий для людини формат: 500 B , 63 KB , 9 MB , 2 GB , 1 TB .

Форматує розмір файлу у зрозумілий формат.

Всі розміри файлів в PHP зберігаються в байтах і виходять в них за допомогою filesize() або ще. Але набагато зручніше читати 1 KB ніж 1024 B.

Функція отримує кількість байтів та змінює їх на кількість:

  • кілобайтів (KB)
  • мегабайтів (MB)
  • гігабайтів (GB)
  • терабайтів (TB)
  • петабайт (PB)
  • екзабайт (EB)
  • зеттабайт (ZB)
  • йоттабайт (YB)

Також, слід пам’ятати, що максимальне число на 32-розрядних системах обмежене і дорівнює 2147483647, тоді як на 64-розрядній системі воно дорівнює 9223372036854775807. Тому, коли потрібно вказати число більше, ніж система може обробити, вказуйте число у вигляді рядка.

wp_convert_hr_to_bytes() — схожа функція, яка навпаки, перетворює скорочене байтове значення на ціле байтове значення. Наприклад, 1Mbперетворений на 1048576.

Використовуйте цю кастомну функцію , щоб перетворити велике число в вид , що читається 1500 >> 1,5 тыс..

Працює на основі:
number_format_i18n()
1 раз – 0.000025 сек
(дуже швидко) | 50000 разів – 0.11 сек
(дуже швидко) |
PHP 7.0.8, WP 4.6

Хуків немає.

Повертає

Строку|false. Рядок або false, якщо не вдалося конвертувати.

Використання

size_format($bytes, $decimals);
$bytes
(число/рядок) (обов’язковий)
Число байт, які потрібно конвертувати. Майте на увазі, що в PHP є максимальний допустимий розмір для чисел і він малий в 32 розрядних системах.
$decimals
(число)
Число цифр після коми.


За замовчуванням: 0

Приклади

0

#1 Демонстрація конвертації байтів

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

список змін

З версії 2.3.0Введено.
З версії 6.0.0Додаток для PB, EB, ZB, і YB був приєднаний.

Код size_format() WP 6.0.2

function size_format( $bytes, $decimals = 0 ) {
	$quant = array(
		/* translators: Unit symbol for yottabyte. */
		_x( 'YB', 'unit symbol' ) => YB_IN_BYTES,
		/* translators: Unit symbol for zettabyte. */
		_x( 'ZB', 'unit symbol' ) => ZB_IN_BYTES,
		/* translators: Unit symbol for exabyte. */
		_x( 'EB', 'unit symbol' ) => EB_IN_BYTES,
		/* translators: Unit symbol for petabyte. */
		_x( 'PB', 'unit symbol' ) => PB_IN_BYTES,
		/* translators: Unit symbol for terabyte. */
		_x( 'TB', 'unit symbol' ) => TB_IN_BYTES,
		/* translators: Unit symbol for gigabyte. */
		_x( 'GB', 'unit symbol' ) => GB_IN_BYTES,
		/* translators: Unit symbol for megabyte. */
		_x( 'MB', 'unit symbol' ) => MB_IN_BYTES,
		/* translators: Unit symbol for kilobyte. */
		_x( 'KB', 'unit symbol' ) => KB_IN_BYTES,
		/* translators: Unit symbol for byte. */
		_x( 'B', 'unit symbol' ) => 1,
	);

	if ( 0 === $bytes ) {
		/* translators: Unit symbol for byte. */
		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;
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *