Получить все элементы по имени класса с помощью DOMDocument
На этот вопрос, кажется, уже много раз отвечали, но я все еще не могу собрать все воедино.
Я хотел бы получить значение узла каждого класса по имени. например
<td class="thename"><strong>32</strong></td>
<td class="thename"><strong>12</strong></td>
Я хотел бы взять 32 и 12. Я предполагаю, что для этого требуется своего рода цикл for, но не уверен точно, как его реализовать. Вот что у меня есть на данный момент
$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);
7
2 answers
Это то, что вы ищете?
$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
Author: user2112300, 2013-03-03 10:45:42
Я просто сделал это в 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
Author: Naveed Khan, 2017-07-06 06:50:47