2013-03-12 35 views
0

的Html什麼,我抓住這個樣子的簡單的HTML DOM獲得TD的內容,其中的具體內容爲

<div id="table"><table> 
<tr><td>Clubname</td><td>15</td><td>30</td></tr> 
<tr><td>Clubname 2</td><td>15</td><td>30</td></tr> 
<tr><td>Clubname 3</td><td>15</td><td>30</td></tr> 
</table></div> 

我要的是找出TR其中Clubname 2是從TD獲取數據[ 1]和td [2]並輸出。

我想這跟simple_html_dom.php做

我已經被

require('simple_html_dom.php'); 
$html = file_get_html('webpage.html'); 
foreach($html->find('div#table') as $e) 
echo $e->innertext . '<br>'; 

如何找到特定clubname,並從TD的從同一TR的具體內容?

============================================== ===================================

好的,謝謝,我現在所做的就像你告訴我只有變量,因爲後來我想使用一個變量。

<?php 
    $clubname = 'Ajax'; 
    require('phpQuery/phpQuery.php');   
    $result = array(); 
    $limit = 2; //you need only the next two sibling 

    $dom = phpQuery::newDocumentFile('http://soccer.gijsve.nl/test2.php');   
    $match = $dom->find('td:contains("'.$clubname.'")');   
    while(0 < count($match = $match->next()) && (0 < $limit--) ){ 
      $result[] = $match->text(); 
    } 
    var_dump($result); 

?> 

我現在想要的是選擇第一個td(匹配前的td)和第四個和第五個例子。因爲我需要知道得分的目標,得分和等級。請參閱http://soccer.gijsve.nl/test2.php瞭解我所抓取的表格。

+0

@AshwiniAgarwal:OP提供的示例代碼? – 2013-03-12 11:26:55

+0

是的,它是示例代碼,這是真正的代碼:http://soccer.gijsve.nl/test2.php – Gijsve 2013-03-12 11:51:42

回答

2

我推薦你一個簡單的DOM工具: http://code.google.com/p/phpquery/ 正如我expreienced它有點快,選擇器工作得更好。這個項目沒有完成噴氣式飛機。但閱讀部分運作良好。 jQuery中那樣工作的選擇;)

<?php 
    require('phpquery/phpQuery.php');   
    $result = array(); 
    $limit = 2; //you need only the next two sibling 

    $dom = phpQuery::newDocumentFile('webpage.html');   
    $match = $dom->find('td:contains("Clubname 2")');   
    while(0 < count($match = $match->next()) && (0 < $limit--) ){ 
      $result[] = $match->text(); 
    } 
    var_dump($result); 

    // other example: 
    $match = $dom->find('td:contains("Clubname 2")');   
    $loses = $match->siblings('.loses')->text(); //matches the siblings of the $match element, and has loses class 
    $wins = $match->siblings('.wins')->text(); //matches the siblings of the $match element, and has wins class 

?> 

這適用於你的樣品HTML和完整的HTML你評論什麼。

隨着simple_html_dom您可以搜索文本,文本「標籤」:

$textlist = $html->find('text'); 

這將返回所有文本塊的,你應該運行的foreach在$文本清單,如果elemnt的HTML等於什麼你會發現,將它保存到一個變量中,然後退回到這個父級(在完整的html中,第二個父級),而不是步驟到下一個兄弟,再次考慮比phpQuery更復雜的下一個兄弟。

+0

好吧,我會嘗試這個,我會很快回復,謝謝! – Gijsve 2013-03-12 12:57:09

+0

好的;)和一個警告:':contains'在jQuery中的作用 – Kovge 2013-03-12 13:03:50

+0

對我來說,用php抓取html並對它做些什麼是新的,所以我正在學習它。我會在開幕式上張貼我所做的。我還有一個問題:例如,如果我想在俱樂部名稱之前的td以及第四個td和第五個之前怎麼辦。 – Gijsve 2013-03-12 13:46:58

1

Phpquery也同胞選擇這使生活更輕鬆:

$dom->find('td:contains("Clubname 2") + td')->text(); # 15 
$dom->find('td:contains("Clubname 2") + td + td')->text(); # 30 
$dom->find('td:contains("Clubname 2") ~ td')->text(); # 15 30