从php.ini中的简写字节表示法中获取字节值

Nic*_*unt 14 php byte

有没有什么办法让来自像函数返回字符串中的字节值ini_get('upload_max_filesize')ini_get('post_max_size')的时候都用速记符号字节?例如从4M获得4194304?我可以破解一个这样做的功能,但如果没有一些内置的方法,我会感到惊讶.

Lig*_*ica 26

您链接的段落结束:

您不能在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;
}
Run Code Online (Sandbox Code Playgroud)

像这样使用它:

echo return_bytes("3M");
// Output: 3145728
Run Code Online (Sandbox Code Playgroud)

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

  • 刚看到 - 有一些免费代表! (2认同)
  • @LightnessRacesinOrbit 这就是困扰我的地方。我希望在错误|意外输入或返回原始值时为 false(与给定的类型相同,未转换为字符串)。 (2认同)