извините, если я неправильно понял вопрос, как я думаю, это может быть ответом, который вы ищете ...:)
Версия 1:
#executes the comand and stores in array
$testExec = exec("df -h --total" ,$testArray);
#moves to the end off the array
$testArrayEnd = end($testExec);
#splits the last line into an array
$stringArray = explode(' ',$testArrayEnd);
foreach($stringArray as $string){
#checks if the string contains a %
if (preg_match("/%/", $string)) {
#there is only one % so this is what you're looking for
$percentage = $string;
var_dump($percentage);
}
}
PS. @ReynierPM вам не нужен shell_exec для получения полного результата вывода ... вам просто нужно определить массив, в котором вы хотите хранить данные ... :) и предоставить его не как строку, но вы можете легко преобразовать его в один с помощью implode ()
Версия 2:
Извините, если вы не согласны, но мне неудобно просто редактировать ответ @Nazariy, так как я добавляю / меняю многое (на этом этапе смотрите историю изменений:).
#thanks go out to ReynierPM
#returns string with every entry being separated by a newline
$output = shell_exec('df -h --total');
$ArrayFull=(array_map(function($line){ /*<-- *¹ & *² */
$elements=preg_split('/\s+/',$line); /*<--- *4 */>
return(array(
'filesystem' => $elements[0],
'1k-blocks' => $elements[1],
'used' => $elements[2],
'available' => $elements[3],
'use%' => $elements[4],
'mounted_on' => $elements[5]
));
},explode("\n",$output))); /*(<--- *³)*/
#removes bloat
unset($ArrayFull[0]);
#Rebase array keys /5966191/perebazirovat-klychi-massiva-posle-sbrosa-elementov
$ArrayFull=array_values($ArrayFull);
#if you only want the last value ;)
$lastVallue = end($ArrayFull);
Пояснение:
* ¹
array_map также применяет все значения в массиве
"array_map - применяет обратный вызов к элементам заданных массивов"
* ²
Сначала мы даем ему функцию обратного вызова, которая будет вызываться для каждого элемента, и передаем ей переменную $ line (мы используем ее для хранения строки, созданной разнесением)
* ³
Мы используем array_maps для разнесения на \ n (чтобы создать запись массива для каждой новой строки) (Мы разыскиваем разнесение на $ data)
* 4
Теперь, когда каждая строка разделена ... Мы разделяем разделенные строки на подстроки и сохраняем их в новых переменных.
preg_split ('/ \ s + /', $ line) разбивает $ line на массив без необходимости решать проблему с несколькими пробелами. с места для места.
Извините за форматирование ... отредактирую последнее:)