Получить все элементы по имени класса с помощью 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);
Author: Sammy, 2013-03-03

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