Search code examples
phpdomweb-scrapingsimpledom

PHP Simple Dom - Loop through one class at a time?


Is there any way to do this? currently I'm using this method to go through the td's for every table in a wikipedia entry that have a class of wikitable.

foreach ($html->find('table.wikitable td') as $key => $info)
{
    $text = $info->innertext;
}

However, what I want to do is have seperate loops for each table that share the class name of wikitable. I can't figure out how to do this.

Is there some kind of syntax? I want to do something like this

$first_table = $html->find('table.wikitable td', 0); // return all the td's for the first table
$second_table = $html->find('table.wikitable td', 1); // second one

Solution

  • I might not fully understand your question but it seems that $html->find simply returns an array, in your case an array of tables:

    $tables = $html->find('table.wikitable');
    

    You can then loop through your tables and find the td's in each table:

    foreach( $tables as $table )
    {
       $tds = $table->find('td');
    
       foreach( $tds as $td )
       {
          ...
       }
    }
    

    If you only want to target the second table you can use:

    $table = $tables[1];
    

    Or something like that.