PHP 8.6.0 Beta 1 is available for testing

ini_parse_quantity

(PHP 8 >= 8.2.0)

ini_parse_quantityИнтерпретирует сокращение размера в значении ini-параметра

Описание

function ini_parse_quantity(string $shorthand): int

Функция интерпретирует и в случае успешного выполнения возвращает размер в байтах, который получила из сокращения значения ini-параметра.

Список параметров

shorthand

Сокращение значения ini-параметра для разбора. Параметр требует целое число, за которым следует необязательный множитель. Поддерживаются следующие множители: k или K — килобайт, 1024 байта; m или M — мегабайт, 1 048 576 байтов; g или G — гигабайт, 1 073 741 824 байта. Параметр принимает десятичные, шестнадцатеричные с префиксом 0x или 0X, восьмеричные с префиксом 0o, 0O или 0 и двоичные с префиксом 0b или 0B числа.

Возвращаемые значения

Функция возвращает размер в байтах в виде целого числа (int ), который получила после интерпретации сокращения размера ini-значения.

Ошибки

Функция выдаёт ошибку уровня E_WARNING , если не смогла разобрать значение или встретила недопустимый множитель.

Примеры

Пример #1 Пример использования функции ini_parse_quantity()

<?php
var_dump(ini_parse_quantity('1024'));
var_dump(ini_parse_quantity('1024M'));
var_dump(ini_parse_quantity('512K'));
var_dump(ini_parse_quantity('0xFFk'));
var_dump(ini_parse_quantity('0b1010k'));
var_dump(ini_parse_quantity('0o1024'));
var_dump(ini_parse_quantity('01024'));
var_dump(ini_parse_quantity('Foobar'));
var_dump(ini_parse_quantity('10F'));
?>

Результат выполнения приведённого примера:

int(1024)
int(1073741824)
int(524288)
int(261120)
int(10240)
int(532)
int(532)
Warning: Invalid quantity "Foobar": no valid leading digits, interpreting as "0" for backwards compatibility
int(0)
Warning: Invalid quantity "10F": unknown multiplier "F", interpreting as "10" for backwards compatibility
int(10)

Смотрите также

  • ini_get() - Получает значение параметра конфигурации

Нашли ошибку?

ИнструкцияИсправлениеСообщение об ошибке
+Добавить

Примечания пользователей 1 note

up
0
php at SpamDeletToDotLLMsRefuse dot dunn dot eu dot org
1 month ago
I made a very basic polyfill for this function, you're welcome to use
<?php
if(!function_exists('ini_parse_quantity')) {
 /**
 * Very basic polyfill for ini_parse_quantity
 * @license MPL-2.0
 * @license CC-BY-3.0
 */
 function ini_parse_quantity($shorthand) {
 $regex = '/^(0?[xXbBoO]?)([0-9A-Fa-f]*)([kKmMgG]?)$/';
 preg_match($regex, $shorthand, $matches);
 if(empty($matches)) {
 trigger_error('Can\'t parse '.$shorthand.' :(', E_USER_WARNING);
 return 0;
 }
 [ $full, $binOctHex, $value, $unit ] = $matches;
 switch ($binOctHex) {
 case '0b':
 case '0B':
 $base = 2;
 break;
 case '0o':
 case '0O':
 case '0':
 $base = 8;
 break;
 case '0x':
 case '0X':
 $base = 16;
 break;
 default:
 $base = 10;
 break;
 }
 $value = intval($value, $base);
 switch ($unit) {
 case 'g':
 case 'G':
 $value *= 1024;
 case 'm':
 case 'M':
 $value *= 1024;
 case 'k':
 case 'K':
 $value *= 1024;
 default:
 break;
 }
 return $value;
 }
}
+Добавить

AltStyle によって変換されたページ (->オリジナル) /