如何将PHP shell_exec的响应输出到HTML表中?

时间:2019-02-17 15:06:50

标签: php html arrays

我有一个PHP shell_exec命令,输出以下内容:

Cats
3
Dogs
9
Fish
2

第二行是一个数字,与上一行中的动物名称相对应,例如,我想要HTML表中的输出:

HTML TABLE
------------
| Cats | 3 |
| Dogs | 9 |
| Fish | 2 |
------------

我认为我需要创建一个数组,但是我不确定如何将动物的名称和数字对齐到同一行。目前我有这个:

<?php
    $array1 = array();
    exec( "Command", $Output );

?>
<html>


<table>
  <tr>
    <th>Animal</th>
    <th>Number</th>
  </tr>
  <tr>
    <td>*</td>
    <td>*</td>
  </tr>
  <tr>
    <td>*</td>
    <td>*</td>
  </tr>
  <tr>
    <td>*</td>
    <td>*</td>
  </tr>

  </tr>
</table>

</body>
</html>

如何将其放入HTML表格?

2 个答案:

答案 0 :(得分:1)

使用explode转换为数组后,可以使用array-chunk将其转换为数组。

$str = 'Cats
3
Dogs
9
Fish
2';

$arr = explode(PHP_EOL, $str); //break each line
$arr = array_chunk($arr,2); // group each pair
foreach($arr as $e)
    $res[$e[0]] = $e[1]; // group each pair as key and value
print_r($res);

这将输出:

Array
(
    [Cats] => 3
    [Dogs] => 9
    [Fish] => 2
)

您现在可以通过循环foreach($res as $animal => $number)

来更轻松地显示它

您的HTML应该是:

<table>
  <tr>
    <th>Animal</th>
    <th>Number</th>
  </tr>
<?php foreach($res as $animal => $number)
    echo '<tr><td>'. $animal . '</td><td>' . $number . '</td></tr>'; ?>
</table>

答案 1 :(得分:0)

您可以使用preg_split()函数将字符串沿换行符拆分为一个数组,然后一次遍历两个数组,并在每次循环时将前两个移开。

<table>
<?php
$Output = <<< EOF
Cats
3
Dogs
9
Fish
2
EOF;

$animals = preg_split('/[\n\r]+/', trim($Output));

while (!empty($animals)) {
    echo "<tr>\n";
    echo "<td>{$animals[0]}</td>\n";
    echo "<td>{$animals[1]}</td>\n";
    echo "</tr>\n";
    array_shift($animals);
    array_shift($animals);
}
?>
</table>