PHP:提取特定内容,将变量从字符串中的文本块中分离出来
我有一个名为$driveusage的变量,它包含以下文本块: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
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‘