2017-02-13 84 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