ini_parse_quantity

(PHP 8 >= 8.2.0)

ini_parse_quantityObtém o tamanho interpretado da sintaxe abreviada do ini

Descrição

function ini_parse_quantity(string $shorthand): int

Retorna o tamanho interpretado em bytes em caso de sucesso a partir de uma notação abreviada ini.

Parâmetros

shorthand

Notação abreviada ini a ser interpretada, precisa ser um número seguido por um multiplicador opcional. Os seguintes multiplicadores são suportados: k/K (1024), m/M (1048576), g/G (1073741824). O número pode ser um decimal, hexadecimal (prefixado com 0x ou 0X), octal (prefixado com 0o, 0O ou 0) ou binário (prefixado com 0b ou 0B)

Valor Retornado

Retorna o tamanho interpretado em bytes como um número int.

Erros/Exceções

Se o valor não puder ser interpretado, ou se um multiplicador inválido for utilizado, um E_WARNING é emitido.

Exemplos

Exemplo #1 Alguns exemplos de 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'));

?>

O exemplo acima produzirá:

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)

Veja Também

  • ini_get() - Obtém o valor de uma opção de configuração
adicionar nota

Notas de Usuários 1 note

up
0
php at SpamDeletToDotLLMsRefuse dot dunn dot eu dot org
2 days 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;
    }
}