从php中的速记字节表示法中获取字节值.ini

2022-08-30 23:10:17

有没有办法从函数返回的字符串中获取字节值,例如当它们使用速记字节表示法时?例如,从4M获得4194304?我可以将一个功能拼凑在一起,但是如果没有一些内置的方法来做到这一点,我会感到惊讶。ini_get('upload_max_filesize')ini_get('post_max_size')


答案 1

您链接到的段落结束:

您不能在 php.ini 之外使用这些速记符号,而应使用字节的整数值。有关如何转换这些值的示例,请参阅 ini_get() 文档

这会导致你遇到这样的事情(我稍微修改了一下):

function return_bytes($val)
{
    $val  = trim($val);

    if (is_numeric($val))
        return $val;

    $last = strtolower($val[strlen($val)-1]);
    $val  = substr($val, 0, -1); // necessary since PHP 7.1; otherwise optional

    switch($last) {
        // The 'G' modifier is available since PHP 5.1.0
        case 'g':
            $val *= 1024;
        case 'm':
            $val *= 1024;
        case 'k':
            $val *= 1024;
    }

    return $val;
}

像这样使用它

echo return_bytes("3M");
// Output: 3145728

没有内置函数来执行此任务;回想一下,实际上,INI设置是为在PHP内部使用而设计。PHP 源代码使用与上述函数类似的函数。


答案 2

嘎!刚刚在 http://www.php.net/manual/en/function.ini-get.php 上找到答案

只需要 RTM...

function return_bytes($val) {
    $val = trim($val);
    $last = strtolower($val[strlen($val)-1]);
    switch($last) {
        // The 'G' modifier is available since PHP 5.1.0
        case 'g':
            $val *= 1024;
        case 'm':
            $val *= 1024;
        case 'k':
            $val *= 1024;
    }

    return $val;
}

推荐