在 PHP 正则表达式中提取数据使用字符串的十进制数和字符(使用单位)

Extract decimal number and character (usage units) of a data usage string in PHP regex

我有一个字符串,其中 returns 以 B、KB、MB 等为单位的数据使用情况。我想把它的数字和字符串部分分开。

例如:14.5 MB - 我想要 14.5 和 MB。

我尝试使用正则表达式

'/(\d+)(\w)/'

但没有给出想要的结果。

预期结果

Array( [0] => 14.5, [1] => 'MB' )

您可以尝试在此处使用 preg_match_all 和以下正则表达式模式:

\b(\d+(?:\.\d+)?)\s*([KMGT]?B)\b

这匹配(可能)十进制大小,后跟基于字节的单位。

$input = "Here are three sizes 14.5 MB, 10B, and 30.8 GB";
preg_match_all("/\b(\d+(?:\.\d+)?)\s*([KMGT]?B)\b/", $input, $matches);
print_r($matches[1]);
print_r($matches[2]);

这会打印:

Array
(
    [0] => 14.5
    [1] => 10
    [2] => 30.8
)
Array
(
    [0] => MB
    [1] => B
    [2] => GB
)

如果您确定您的字符串将始终在

之间包含 space,则可以使用 explode 函数
$consumedData = '14.5 MB';
$withSeperate = explode(' ',$consumedData);
var_dump($withSeperate);

输出

Array([0] => 14.5, [1] => 'MB');