Get all elements by class name using DOMDocument

This question seems to have been answered many times, but I still canโ€™t put together the parts.

I would like to get the node value of each class by name. eg

<td class="thename"><strong>32</strong></td> <td class="thename"><strong>12</strong></td> 

I would like to capture 32 and 12. I assume that this is required for a type loop, but not quite exactly how to implement this. That's what i still have

 $domain = "http://domain.com"; $dom = new DOMDocument(); $dom->loadHTMLFile($domain); $xpath = new DomXpath($dom); $div = $xpath->query('//*[@class="thename"]')->item(0); $stuff = $div ->textContent; echo($stuff); 
+6
source share
2 answers

Is this what you are looking for?

  $result = array(); $doc = <<< HTML <html> <body> <div>1 <span>2</span> </div> <div>3</div> <div>4 <span class="class1"><strong>5</strong></span> <span class="class1"><strong>6</strong></span> <span>7</span> </div> </body> </html> HTML; $classname = "class1"; $domdocument = new DOMDocument(); $domdocument->loadHTML($doc); $a = new DOMXPath($domdocument); $spans = $a->query("//*[contains(concat(' ', normalize-space(@class), ' '), ' $classname ')]"); for ($i = $spans->length - 1; $i > -1; $i--) { $result[] = $spans->item($i)->firstChild->nodeValue; } echo "<pre>"; print_r($result); exit(); 
+11
source

i just did it in php

 $dom = new DOMDocument('1.0'); $classname = "product-name"; @$dom->loadHTMLFile("http://shophive.com/".$query); $nodes = array(); $nodes = $dom->getElementsByTagName("div"); foreach ($nodes as $element) { $classy = $element->getAttribute("class"); if (strpos($classy, "product") !== false) { echo $classy; echo '<br>'; } } 
+3
source

All Articles