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

时间:2017-02-13 20:01:28

标签: 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>';
    }

?>

1 个答案:

答案 0 :(得分:0)

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

  1. 输出的前两行包含数据的标题,因此不会更改。
  2. 您有\n作为行分隔符,\t(制表符)作为列分隔符。
  3. 您可以尝试以下代码:

    <?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>';