PHP:提取特定内容,将变量从字符串中的文本块中分离出来

PHP:提取特定内容,将变量从字符串中的文本块中分离出来,php,Php,我有一个名为$driveusage的变量,它包含以下文本块: Filesystem Type Size Used Avail Use% Mounted on rootfs rootfs 111G 8.7G 96G 9% / /dev/sda1 ext3 111G 8.7G 96G 9% / devtmpfs devtmpfs 59M 0 59M 0% /dev tmpfs

我有一个名为$driveusage的变量,它包含以下文本块:

Filesystem     Type      Size  Used Avail Use% Mounted on
rootfs         rootfs    111G  8.7G   96G   9% /
/dev/sda1      ext3      111G  8.7G   96G   9% /
devtmpfs       devtmpfs   59M     0   59M   0% /dev
tmpfs          tmpfs      61M     0   61M   0% /dev/shm
tmpfs          tmpfs      61M  264K   60M   1% /run
tmpfs          tmpfs      61M     0   61M   0% /sys/fs/cgroup
tmpfs          tmpfs      61M   16K   61M   1% /tmp
我只需要将数据从rootfs行提取到单独的变量中(即
$drivesize
$driveused
$drivefree
,而不是数组),只需
大小
使用的
可用的
数字,只需数字(包括小数)。
请记住,
使用的
值一旦超过
9.9G
,将显示为
10G
(无小数点),当avail下降到
10G
以下时,将显示为
9.9G

我尝试了
preg\u replace()
的每一种组合,但我对那些复杂的表达式不太在行(

如果您能提供任何帮助,我们将不胜感激:)

以下是我得到的:

$df_info = explode(' ', shell_exec("df -H / | tail -1 | tr -s ' ' | cut -d ' ' -f 2,3,4"));
$df = array(
    'size'      => $df_info[0],
    'used'      => $df_info[1],
    'available' => $df_info[2],
);

df-H/
获取有关磁盘的可读信息,
tail-1
获取该信息的最后一行(重要数字,
tr-s'| cut-d'-f2,3,4
获取第二、第三和第四个条目(“大小”、“已使用”和“可用”)在那一行。

你从哪里得到这个文本?你可以通过
awk
或者其他什么东西传递它,如果它来自
exec
。它来自一个PHP exec\u shell调用:+1,这是unix原理,但你可能应该解释一下你刚才做了什么。代码看起来几乎完美,但$df\u info[0]返回119G我知道我可以在字符串上使用另一个PHP命令来修剪G,但是有没有一种方法可以在没有G的情况下捕获它?:)在没有G的情况下获得er workin:)WOOT<代码>df-H/| tail-1 | tr-s‘| cut-d’-f2,3,4 | tr-d'G‘