How to check if a SimpleHTMLDom element does not e

2019-02-23 13:28发布

问题:

SimpleHtmldom can be used to extract the contents of the first element with class description.

$html = str_get_html($html);
$html->find('.description', 0)

However if this class does not exist, PHP will throw an error

Trying to get property of non-object

I tried

if(!isset($html->find('.description', 0))) {
    echo 'not set';
}

and

if(!empty($html->find('.description', 0))) {
    echo 'not set';
}

but both gives the error

Can't use method return value in write context

What is the proper way to check if the element exist?

回答1:

if(($html->find('.description', 0))) {
    echo 'set';
}else{
    echo 'not set';
}

http://www.php.net/manual/en/control-structures.if.php



回答2:

According to the SimpleHtmlDOM Api str_get_html($html) expects a string as input. First check with a html validator if your code is well formatted.

$htmlObj = str_get_html($html);
if (!is_object($htmlObj)) return; // catch errors 

// or wrap further code in 
if (is_object($htmlObj)) { /* doWork */ }


回答3:

$avalable = ($element->find('span.sold-out-text', 0)) ? 1 : 0;

It works for me.



回答4:

for me none of above solution worked and finally i checked like this

$html = str_get_html($html);

if($html){
    //html found
}else{
    //html not found
}