以下是用 PHP8 获取结果以字节为单位的另一种方法
<?php
public function getBytes(string $size): int
{
$size = trim($size);
preg_match('/([0-9]+)[\s]*([a-zA-Z]+)/', $size, $matches);
$value = (isset($matches[1])) ? $matches[1] : 0;
$metric = (isset($matches[2])) ? strtolower($matches[2]) : 'b';
$value *= match ($metric) {
'k', 'kb' => 1024,
'm', 'mb' => (1024 ** 2),
'g', 'gb' => (1024 ** 3),
't', 'tb' => (1024 ** 4),
default => 0
};
return (int)$value;
}
echo getBytes('2GB') . "</br>";
echo getBytes('4tb') . "</br>";
echo getBytes('5345etrgrfd') . "</br>";
echo getBytes('357568336586') . "</br>";
?>