2013-04-25 21 views
0

我正在計算HTML表中每個唯一值的實例,並將結果返回到它自己的表中。該表格是從用戶的文本輸入中生成的。因此,例如,用戶輸入可能如下所示:統計HTML表中唯一值的實例

Report 46  Bob Marley 4/20/2013 Summary: I shot the sheriff Case #32 User Error 
Report 50 Billy The Kid 7/14/2013 Summary: I'm just a boy in a grown up world Case #33 User Experience 
Report 51 Oscar The Grouch 10/10/2013 Summary: Refuse, reuse, recycle Case #33 User Experience 

其中大空格是選項卡。

這將返回:

<table> 
<tr> 
    <td>Bob Marley</td><td>46</td><td>4/20/2013</td><td>Case #32</td><td>User Error</td> 
</tr> 
<tr> 
    <td>Billy The Kid</td><td>50</td><td>4/20/2013</td><td>Case #33</td><td>User Experience</td> 
</tr> 
<tr> 
    <td>Oscar The Grouch</td><td>51</td><td>10/10/2013</td><td>Case #33</td><td>User Experience</td> 
</tr> 
</table> 

我需要做的是1)理貨報告的數量是什麼,2)相吻合的時候出現的每個病例數數,2),並計算各次數類別出現,然後顯示它的下一個頁面上像這樣的:

Number of reports: 
3 

Cases: 
Case #33 - 2 
Case #32 - 1 

Categories: 
User Experience - 2 
User Error - 1 

我正在尋找任何建議,就如何我可能會解決這個問題。我正在使用和學習Javascript/HTML(和jQuery),但如果這些工具更合適,可以開放使用PHP,SQL等。

我正在考慮將表值傳遞給一個數組,然後利用for循環和regexes來計算唯一值,但我不確定這是否是最好的方法。

EDIT

一個更詳細的是我沒有明確狀態是,我有訪問用戶輸入數據(即製表符分隔的文本)被接通到一個表中之前它。因此,如果在將它們轉換成表格之前將相關的值計算出來會更容易,那麼請讓我知道。

回答

2

就PHP而言,您可以將表格HTML存儲到字符串中並將其加載到DOM解析器中。

http://simplehtmldom.sourceforge.net/

這是我們使用的大部分我們的項目涉及網頁抓取,雖然它會工作得很好,使用它們的功能從一個字符串解析您的HTML:

$html = str_get_html($yourHtmlString); 

然後你可以循環遍歷每個tr,並從那裏你可以看看每個td添加到您的符合。

即獲得第三排的類別,你可以使用:

$html->find("table", 0)->find("tr", 2)->find("td", 4)->plaintext; 

您可以通過像表圈:

$reportCount = 0; 
$reportCases = array(); 
foreach ($html->find("table", 0)->find("tr") as $tableRow) { 
    $reportCount++; 
    $reportCases[] = $tableRow->find("td", 1)->plaintext; 
} 

等,雖然當然也存儲所有其他必要的數據,然後根據需要將其格式化爲表格輸出。

+0

感謝您的意見,Patrick。我將閱讀您現在鏈接的DOM解析器。看起來很有希望。 – Rooncicle 2013-04-25 15:59:01

+0

我想我可以使這個解決方案的工作,如果我創建HTML表創建期間分配的ID和類的創意。感謝您的建議。 – Rooncicle 2013-05-07 22:10:01