我有一个字符串,它以 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
)
如果您确定字符串之间始终包含空格,则可以使用 explode 函数
$consumedData = '14.5 MB';
$withSeperate = explode(' ',$consumedData);
var_dump($withSeperate);
输出
Array([0] => 14.5, [1] => 'MB');