Controleren of element bestaat in domDocument

Status
Niet open voor verdere reacties.

woltz

Gebruiker
Lid geworden
24 nov 2007
Berichten
11
Ik probeer een tabel uit een html bestand te lezen door middel van een domDocument. Nu zit ik met het probleem dat de eerste rij geen "td" elementen bevat, hierdoor krijg ik de volgende foutmelding:

Notice: Trying to get property of non-object in Y:\PortableApps\xampp\htdocs\rapportage\test.php on line 20

Notice: Trying to get property of non-object in Y:\PortableApps\xampp\htdocs\rapportage\test.php on line 21

Notice: Trying to get property of non-object in Y:\PortableApps\xampp\htdocs\rapportage\test.php on line 22

PHP:
<?php

$html = file_get_contents('test.html');

    $dom = new domDocument;

    $dom->loadHTML($html);

    $dom->preserveWhiteSpace = false;

    $tables = $dom->getElementsByTagName('table');

    $rows = $tables->item(0)->getElementsByTagName('tr');

    foreach ($rows as $row)
    {

        $cols = $row->getElementsByTagName('td');

        echo $cols->item(0)->nodeValue.'<br />';
        echo $cols->item(1)->nodeValue.'<br />';
        echo $cols->item(2)->nodeValue;
        echo '<hr />';
		
    }
?>

Weet iemand hoe ik kan controleren of er een "td" element in zit?
 
Dat is een beetje afhankelijk van wat $cols teruggeeft.
Het beste kun je op regel 19 print_r($cols); neerzetten zodat je dat kunt achterhalen.

Zo te lezen geeft die een array terug, op een array kun je weer de count-functie toepassen dus krijg je zoiets:
PHP:
foreach ($rows as $row)
{
  $cols = $row->getElementsByTagName('td');
  if(count($cols) > 0):
    echo $cols->item(0)->nodeValue.'<br />';
    echo $cols->item(1)->nodeValue.'<br />';
    echo $cols->item(2)->nodeValue;
    echo '<hr />';
  endif;
}
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan