0

我必须解析 2 种表一种是这个

http://leghe.fantagazzetta.com/f12-13/(“Classifica Generale”)

另外两张桌子在这里 http://leghe.fantagazzetta.com/f12-13/formazioni?id=30339&g=4

如何将这些数据提取到数组中?

对于第一张桌子,我写了这段代码,但我真的不知道我在做什么

<?php
require('simple_html_dom.php');

$html = new simple_html_dom();
$html->load_file('http://leghe.fantagazzetta.com/f12-13/classifica'); 

$tabClassifica = $html->find('table#classifica tr');

foreach($tabClassifica as $n) {
    $team=$n->find('td',0)->outertext;
    $arrayTeams[] = array('teamname' => $team);
}

?>
<pre>
<? print_r($arrayTeams); ?>
</pre>

我必须得到这个数组结构

[1] => Array
    (
        [TeamName] => A.C. Tua
        [Pt.] => 9
        [G] => 4
        [V] => 3
        [N] => 0
        [P] => 1
        [G+] => 8
        [G-] => 5
        [Somma Punti] =>  293,50           
    )

[2] => Array
    (
        [TeamName] =>  Ehi Team   
        [Pt.] => 7
        [G] => 4
        [V] => 2
        [N] => 1
        [P] => 1
        [G+] => 5
        [G-] => 5
        [Somma Punti] =>  279,50     
    )

[3] => Array
    (
        [TeamName] =>  Brontolo                      

有人可以指导我吗?

4

1 回答 1

3

您可以使用PHPQuery来实现您想要的。

这是一个示例代码:

include('phpQuery-onefile.php');

$content = file_get_contents('http://leghe.fantagazzetta.com/f12-13/');
$html = phpQuery::newDocumentHTML($content);

$table = $html->find('#classifica tbody');
$general_ranking = array();
$i=0;
foreach($table->children('tr') as $tr){
    /**
     * @var DOMElement $tr
     */
    $getTd = $tr->getElementsByTagName('td');
    foreach($getTd as $td){
        /**
         * @var DOMElement $td
         */
        $general_ranking['tr_'.$i][] = trim($td->textContent);
    }
    ++$i;
}

这应该显示类似于:

array (size=6)
  'tr_0' => 
    array (size=7)
      0 => string 'A.C. Tua' (length=8)
      1 => string '9' (length=1)
      2 => string '4' (length=1)
      3 => string '3' (length=1)
      4 => string '0' (length=1)
      5 => string '1' (length=1)
      6 => string '293,50' (length=6)
  'tr_1' => 
    array (size=7)
      0 => string 'Ehi Team' (length=8)
      1 => string '7' (length=1)
      2 => string '4' (length=1)
      3 => string '2' (length=1)
      4 => string '1' (length=1)
      5 => string '1' (length=1)
      6 => string '279,50' (length=6)
  'tr_2' => 
    array (size=7)
      0 => string 'Brontolo' (length=8)
      1 => string '7' (length=1)
      2 => string '4' (length=1)
      3 => string '2' (length=1)
      4 => string '1' (length=1)
      5 => string '1' (length=1)
      6 => string '274,50' (length=6)
  'tr_3' => 
    array (size=7)
      0 => string 'milanelcuore' (length=12)
      1 => string '6' (length=1)
      2 => string '4' (length=1)
      3 => string '2' (length=1)
      4 => string '0' (length=1)
      5 => string '2' (length=1)
      6 => string '281,00' (length=6)
  'tr_4' => 
    array (size=7)
      0 => string 'LONGOBARDA' (length=10)
      1 => string '5' (length=1)
      2 => string '4' (length=1)
      3 => string '1' (length=1)
      4 => string '2' (length=1)
      5 => string '1' (length=1)
      6 => string '254,50' (length=6)
  'tr_5' => 
    array (size=7)
      0 => string 'i puffi' (length=7)
      1 => string '0' (length=1)
      2 => string '4' (length=1)
      3 => string '0' (length=1)
      4 => string '0' (length=1)
      5 => string '4' (length=1)
      6 => string '258,00' (length=6)

编辑:
回答后我感兴趣,simple_html_dom所以我决定尝试一下。编码风格比PHPQuery我认为的要容易一些,但不是那么稳定。

无论如何,这是使它工作所需的代码:

include('simple_html_dom/simple_html_dom.php');

$html = new simple_html_dom();
$html->load_file('http://leghe.fantagazzetta.com/f12-13/classifica');

$tabClassifica = $html->find('table#classifica tr');

foreach($tabClassifica as $n) {
    /**
     * @var simple_html_dom_node $n;
     */
    $tds = $n->find('td');

    // Don't allow empty records.
    $team = trim(strip_tags($tds[0]->innertext));
    if($team == "" || $team == "&nbsp;") continue;

    $arrayTeams[] = array(
        'TeamName' => $team,
        'Pt.' =>  trim(strip_tags($tds[1]->innertext)),
        'G' =>  trim(strip_tags($tds[2]->innertext)),
        'V' =>  trim(strip_tags($tds[3]->innertext)),
        'N' =>  trim(strip_tags($tds[4]->innertext)),
        'P' =>  trim(strip_tags($tds[5]->innertext)),
        'G+' =>  trim(strip_tags($tds[6]->innertext)),
        'G-' =>  trim(strip_tags($tds[7]->innertext)),
        'Somma Punti' =>  trim(strip_tags($tds[8]->innertext)),
    );
}
于 2012-10-01T23:28:55.723 回答