简体   繁体   中英

php domdocument get node info

I am working with php and I am trying to get certain data from a webpage

everything works till i get to this part:

<a class="cleanthis" href="https://www.web.com" id="1122" rel="#1122" style="display: inline-block;"><strong>the data i want</strong></a>

As you can see i want the data in strong but i cant get it. I only get blank lines

code i use:

foreach($as as $a) {
        if ($a->getAttribute('class') === 'cleanthis') {


$strong =  $a->getElementsByTagName('strong');
echo $strong->nodeValue;;

}

You should be seeing this error message:

Undefined property: DOMNodeList::$nodeValue

That is because $strong = $a->getElementsByTagName('strong'); will put a DOMNodeList in $string . You either need to iterate the list or retrieve the actual node from it, eg

echo $strong->item(0)->nodeValue;

Or you can just use XPath:

$dom = new DOMDocument();
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
foreach ($xpath->evaluate('//a[@class="cleanthis"]/strong/text()') as $element) {
    echo $element->nodeValue, PHP_EOL;
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM