0

below is my html i want to get content of user div with class ucontent i tried using below code but it does not works

$dom = new DOMDocument();
$dom->loadHTML($fop);
$classname="ucontent";
$nodes = $finder->query("//*[contains(@class, '$classname')]");


print_r($nodes);

my html code as below

<div class="abc">
    <div>
        <div class="ucontent">test 123</div>
    </div>
</div>
<div class="abc">
    <div>
    <div>
        <div class="ucontent">test 123</div>
    </div>
    </div>
</div>
<div class="abc">
    <span>
        <div class="ucontent">test 123</div>
    </span>
</div>
<div class="abc">
    <div>
        <div class="ucontent">test 123</div>
    </div>
</div>
saurav
  • 487
  • 1
  • 7
  • 21
  • 1
    You need to define `$finder` - `$finder = new DOMXPath($dom);`. This should then give a list of 4 nodes. You need to `foreach ( $nodes...)` to get content etc. – Nigel Ren Oct 04 '19 at 15:08

1 Answers1

0

To get the content of every div with class ucontent you can try:

$dom = new DOMDocument();
@$dom->loadHTML($dom);
$path = new DOMXPath($dom);     

$nodes= $path->query("/html/body//div[@class='ucontent']/div[last()]");

foreach ($nodes as $i => $node) {
    echo $i, $node->nodeValue, PHP_EOL;
}
Pieter Steyn
  • 502
  • 4
  • 14