2017-02-13 65 views
0

我的shell脚本的输出网页上显示它看起来像这样如何操纵一个shell脚本输出,并使用PHP

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

?> 
+0

有很多方法对皮肤这只猫,使得这个问题很broad.There要么太多可能的答案,还是很好的答案将是太长这种格式。请添加详细信息以缩小答案集或隔离可以用几个段落回答的问题。我建议你找一个开发论坛(也许[Quora](http://www.quora.com/Computer-Programming?))来解决一般问题。然后,如果您有特定的编码问题,请回到Stack Overflow,我们很乐意提供帮助。 –

+0

@JayBlanchard我已经更新了我的代码。 – User

回答

0

如果你想使用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>'; 
+0

工作正常,但表格的列名不与列值对齐。任何修补程序? – User

+0

这是你正在谈论的'跑TRT FLO MAT ...'吗?在我的答案中,我认为该部分不会改变,因此你可以将它硬编码为与列匹配,例如,添加类似于'echo'​​RUN ....'''echo'后''

'' –

+0

i硬编码它,但输出是algined在左边,像'RUN TRT FLO MAT'这样的列名被排列在右边.. – User