2012-05-03 20 views
1

我使用了「簡單的PHP DOM解析器」來解析HTML表格和計數其行。PHP的解析HTML DOM和計數特定行

我解決了計算中的所有行(TR)使用此代碼:

$rows = $table->find('.trClass'); 
$count = count($rows); 
echo $count; 

我得到正確表中的所有行數。

現在我只想對包含特定td(使用特定字符串)的行進行計數。
我們可以假設,我想這個TD僅計算行:

<td class="tdClass" align="center" nowrap="">TARGET STRING</td> 

如何修改的第一個代碼來匹配這個範圍?

我試圖用「的preg_match」或「preg_match_all」但我沒有在它很多經驗,所以我錯過了正確的syntax..I認爲。

任何幫助非常感謝!

回答

1

如何:

<?php 
$targetString = 'TARGET STRING'; 
$rows = $table->find('.trClass'); 

$count = 0; 
foreach($rows as $row) { 
    foreach($row->find('td') as $td) { 
     if ($td->innertext === $targetString) { 
      $count++; 
      break; 
     } 
    } 
} 
+0

非常感謝,但錯誤顯示我與您的代碼:「語法錯誤,意外 '(',期待T_STRING或T_VARIABLE或 '{' 或 '$'在」,指的是‘的foreach($行 - >(‘TD’)爲$ TD){’行.. –

+0

好吧,我發現了錯誤的解決方案(你錯過了‘發現’),現在它的偉大工程!非常感謝! –

+0

是的,對不起,我錯過了那個。顯然,複製粘貼錯誤:)。現在在代碼中也修復了它。 – Styxxy

0
$target = 'TARGET STRING'; 

$n_matchingrows = 0; 

$rows = $table->find('tr.trClass'); 
foreach($rows as $row) { 
    $cell = $row->find('td.tdClass[align=center][nowrap=""]', 0); 
    if ($cell and $cell->innertext===$target) { 
     $n_matchingrows += 1; 
    } 
} 
+0

這種方法的一個小錯誤,如果一個TR有多個TD與目標字符串,你的計數將是錯誤的;)。 – Styxxy

+0

啊,誤解了這個問題。更新。 –

+0

感謝你,但沒有打上,沒有計數迴盪着這個.. –