如何使用 PHP 操作 shell 脚本输出并将其显示在网页上



我的 shell 脚本的输出看起来像这样

RUN    TRT FLO MAT TOPWT HARWT  RAIN  TIRR   CET  PESW  TNUP  TNLF   TSON TSOC
           dap dap kg/ha kg/ha    mm    mm    mm    mm kg/ha kg/ha  kg/ha t/ha
  1 WH   1 217 250  7615  2848   600     0   422   141    76    54   7841   79
  2 WH   2 217 250 10018  4150   600     0   431   139   105    78   7841   79
  3 WH   3 217 250 11087  4416   600     0   430   138   131   163   7841   79
  4 WH   4 217 250  5895  1737   600   213   446   144    52    16   7838   79
  5 WH   5 217 250  7787  2338   600   213   446   143    69    18   7838   79
  6 WH   6 217 250  9610  3519   600   213   450   139    94    46   7838   79

我正在尝试将这些内容加载到网页上的表中。

注意:我使用了explode()但无法找到将数组中的值获取到表中的方法。"如果我的方法错误,请纠正我"。

我的代码:

<?php
$output =  shell_exec("cd DSSAT46; ./dscsm046 CSCER046 A KSAS8101.WHX  2>&1");
$arr = explode(" ",$output);
print_r($arr);
echo "<table><tr>";
  foreach ($output as $row) 
    { 
        echo '<tr>';
        echo '<td>' . $row['RUN'] . '</td>';
        echo '<td>' . $row['TRT'] . '</td>';
        echo '<td>' . $row['FLO dap'] . '</td>';
        echo '</tr>';
    }
?>

如果你想使用explode()你需要分两步完成。在我的回答中,我假设:

  1. 输出的前两行包含数据的标题,因此不会更改。
  2. n作为行分隔符,t(制表符(作为列分隔符。

您可以尝试以下代码:

<?php
// assuming $output contains the output you got from shell
$lines = explode("n", $output);
// starting from 2 to ignore the title
echo '<table>';
for ($i = 2; $i < sizeof($lines); $i++) {
    echo '<tr>';
    $columns = explode("t", $lines[$i]);
    foreach ($columns as $data) {
        echo '<td>'.$data.'</td>';
    }
    echo '</tr>';
}
echo '</table>';

最新更新