Search code examples
phphtmlsimple-html-dom

simple html dom find gives error Trying to get property of non-object


i am using simple_html_dom to get a text from a website but it gives me

Notice: Trying to get property of non-object in C:\wamp64\www\fetch.php on line 6

the website has this.

<div>
 <div class="info">number: (IUL)306/306/2016/68</div>
 <div class="info">published date: 14 june 2016</div>
 <div class="info">published time: 1442</div>
 <div class="info">expiry time 23 june 2016 1100</div>
<div>

my php looks like this which i am trying to get the second div with class info.

<php?include_once('simple_html_dom.php');
$html = file_get_html('http://www.example.com');
$html->save();

foreach($html->find('div[class=info]', 2) as $e)
        $pdate = $e->innertext . '<br>';

 echo "pdate: $pdate";
 ?>

any possible solutions to achieve this?


Solution

  • If you're providing the index:

    $html->find('div[class=info]', 2)
                                   ^ this one
    

    You're going to get the element directly. So you might as well use the ->innertext straight ahead. You already got the third element:

    $info = $html->find('div[class=info]', 2);
    echo $info->innertext;
    

    No need for that foreach.

    If you need that foreach, then just use this alone:

    $html->find('div[class=info]')
                          // ^ note: the second argument is omitted
    

    This will give you the collection of elements found. Example:

    foreach($html->find('div[class=info]') as $e) {
        echo $e->innertext, '<br/>';
    }
    

    This is actually covered in the manual.

    Its under How to find HTML elements? section.