从php中的速记字节表示法中获取字节值.ini
有没有办法从函数返回的字符串中获取字节值,例如当它们使用速记字节表示法时?例如,从4M获得4194304?我可以将一个功能拼凑在一起,但是如果没有一些内置的方法来做到这一点,我会感到惊讶。ini_get('upload_max_filesize')
ini_get('post_max_size')
有没有办法从函数返回的字符串中获取字节值,例如当它们使用速记字节表示法时?例如,从4M获得4194304?我可以将一个功能拼凑在一起,但是如果没有一些内置的方法来做到这一点,我会感到惊讶。ini_get('upload_max_filesize')
ini_get('post_max_size')
您链接到的段落结束:
您不能在 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 源代码使用与上述函数类似的函数。
嘎!刚刚在 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;
}