На этот вопрос, похоже, много раз отвечали, но я все еще не могу скомпоновать эти штуки.
Я хотел бы получить значение узла для каждого класса по имени. например
<td class="thename"><strong>32</strong></td> <td class="thename"><strong>12</strong></td>
я хотел бы захватить 32 и 12. Я предполагаю, что это требуется для типа цикла, но точно не знает, как это реализовать. Вот что я до сих пор
$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);
Это то, что вы ищете?
$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();
я просто сделал это в 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>'; } }