method convertSize documentation in bbn\Str
Converts size from one unit to another.
Example
var_dump(\bbn\Str::convertSize(1, 'GB', 'B'));
// (string) "1073741824B"
var_dump(\bbn\Str::convertSize(1, 'TB', 'GB'));
// (string) "1024GB"
var_dump(\bbn\Str::convertSize(500000, 'MB', 'TB', 6));
// (string) "0.47684TB"
function($size, $unit_orig = 'B', $unit_dest = 'MB', $percision = 0)
{
$unit_orig = strtoupper($unit_orig);
$unit_dest = strtoupper($unit_dest);
if (strlen($unit_orig) <= 1 && $unit_orig !== 'B') {
$unit_orig .= 'B';
}
if (strlen($unit_dest) <= 1 && $unit_dest !== 'B') {
$unit_dest .= 'B';
}
$units = ['B', 'KB', 'MB', 'GB', 'TB'];
if (!in_array($unit_orig, $units)) {
throw new \Exception(X::_("Invalid original unit"));
}
if (!in_array($unit_dest, $units)) {
throw new \Exception(X::_("Invalid destination unit"));
}
$bytes = $size;
$orig_index = array_search($unit_orig, $units);
$dest_index = array_search($unit_dest, $units);
// If destination unit is smaller than the original then reverse the units array
if ($dest_index < $orig_index) {
$units = array_reverse($units);
$orig_index = array_search($unit_orig, $units);
$dest_index = array_search($unit_dest, $units);
$reversed = true;
}
for ($i = $orig_index + 1; $i <= $dest_index; $i++) {
if (isset($reversed)) {
$bytes *= 1024;
} else {
$bytes /= 1024;
}
}
return round($bytes, $percision) . $unit_dest;
}
Converts size from one unit to another. BBN is a suite of PHP and JS libraries and VueJS components - all open-source! bbn.io, build applications, the quick way
This website uses cookies to ensure you get the best experience on our website.
© 2011-2025
BBN Solutions