paquettg / php-html-parser

An HTML DOM parser. It allows you to manipulate HTML. Find tags on an HTML page with selectors just like jQuery.
MIT License
2.37k stars 463 forks source link

Fatal Error: Call to a member function name() on string #256

Open mark-8 opened 3 years ago

mark-8 commented 3 years ago

Hi, Whilst parsing https://www.investmentweek.co.uk/news/4024910/asi-expands-sustainable-development-fund-range-em-launch

Fatal error: Uncaught Error: Call to a member function name() on string in \server\path\php-html-parser\src\PHPHtmlParser\Dom\Parser.php on line 40.

I believe it's failing on this tag <a tag="#&lt;SiteMetaDataProxy:0x007f593ebb6ba8&gt;" href="/tag/aberdeen-standard-investments">Aberdeen Standard Investments</a> - probably as a result of the 'tag' attribute.

Whilst I appreciate the source (out of our control) is the blame here, the fatal error crashes the whole process without a recovery mechanism.

The addition of a simple is_object( $activeNode->tag ) in the condition before the failure may be sufficient to resolve this, but I am not sufficiently familiar with the code to make that assertion.

phattarachai commented 3 years ago

Hi, This library is easy to use, I appreciated it.

But I face the same problem as well. While I can replace the failing tag with str_replace(), it would be nice if the parser can handle the attribute without the fatal error.

Thanks.

Sadikk commented 3 years ago

Also experiencing this

phpfui commented 3 years ago

This should be fixed by PR https://github.com/paquettg/php-html-parser/pull/289