php使用正则表达式去除连续空格

今天打算给我的Termux小工具加个功能,通过php调用df命令的方式实现显示手机硬盘剩余空间。但是我在分割返回的字符串结果时遇到了问题。

由于HTML的段落会自动忽略重复的空格,我被误导用了空格作为分隔符试着分割结果到数组里,但是只能正常显示出开头的“/dev/fuse”。接下来我尝试了用换行符分割,无果。直到我把输出放进<pre>里才反应过来,df的输出结果是用了大段空格来隔开不同列的,如下图:

然后我开始寻找可以将连续空格转为单个空格的方法,最后用一条正则表达式解决了。完整解决如下:

//Disk Usage
//Only test on Android 7 with SDCard
$b = exec("df -H | grep fuse", $bout);
//利用正则表达式将结果中两个及以上的连续空格替换为单空格
$bout[0] = preg_replace('#\s{2,}#',' ', $bout[0]);
$bout[1] = preg_replace('#\s{2,}#',' ', $bout[1]);
//数组中结果依次为Filesystem, Size, Used, Available, Used%, Mounted on.
$disk_usage = explode(" ", $bout[0]);
$sdcard_usage = explode(" ", $bout[1]);