Такой разбор строки (explode) делать вообще законно?

Что-то мне подсказывает, это костыль какой-то.

<?php
$source = shell_exec('prlctl statistics ct1 --filter guest.ram.*');
$a =  str_replace("\t", "", $source);
$b = substr($a, 0, -1);
$parts = explode("\n", $b);
$array = [];
foreach($parts as $item) {
    $arr = explode(':', $item);
    $array[$arr[0]] = $arr[1];
}
foreach($array as $key => $value) {
echo $key." - ".$value."\n";
}

Результат

[root@188789 ~]# php stat.php
guest.ram.usage - 142
guest.ram.cached - 126
guest.ram.total - 512
guest.ram.swap_in - 0
guest.ram.swap_out - 0


Оригинал

[root@188789 ~]# prlctl statistics ct1 --filter guest.ram.*
        guest.ram.usage:        142
        guest.ram.cached:       126
        guest.ram.total:        512
        guest.ram.swap_in:      0
        guest.ram.swap_out:     0
  • Вопрос задан
  • 150 просмотров
Пригласить эксперта
Ответы на вопрос 2
kimono
@kimono
Web developer
Обработку вывода можно сделать в самой команде (добавьте awk), а в php только вывод конечного результата.
Не уверен (не смог повторить вашу команду), но можно попробовать что-то такое:
prlctl statistics ct1 --filter guest.ram.* | sed 's/://g' | awk '{print $1 " - " $2}'
Ответ написан
PavelMonro
@PavelMonro
А собственно почему нет? Недавно похожее делал
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы