Я пытаюсь найти дочерние узлы определенным именем класса (divs с классом name = 'foo') в цикле узлов DOMDocument. Если он существует, он должен установить для моего значения foo значение 1:
Мой документ HTML $ выглядит так:
... <div class="posts">Div Posts 1</div> <div class="posts">Div Posts 2<div class="foo"></div></div> <div class="posts">Div Posts 3</div> <div class="posts">Div Posts 4<div class="foo"></div></div> <div class="posts">Div Posts 5</div> ...
DOMDocument / Xpath ($ document):
$html = array(); $document = new \DOMDocument(); $document->loadHTMLFile($url); // loads html from above $xpath = new \DOMXPath($document); $i=0; foreach ($xpath->query(Parser::cssToXpath('.posts')) as $node) { $html['posts'][$i]['content'] = $node->nodeValue; // check if child node with class name 'foo' exists => doesn't work :( $children = $node->getElementsByTagName('foo'); if($children) $html['posts'][$i]['foo'] = '1'; else $html['posts'][$i]['foo'] = '0'; $i++; }
Вывод:
[posts] => Array ( [0] => Array ( [content] => Div class Posts 1 [foo] => 1 ) [1] => Array ( [content] => Div class Posts 2 [foo] => 1 ) [2] => Array ( [content] => Div class Posts 3 [foo] => 1 ) [3] => Array ( [content] => Div class Posts 4 [foo] => 1 ) [4] => Array ( [content] => Div class Posts 5 [foo] => 1 ) )
getElementsByTagName () может не быть правильным методом для этого, но я уже пробовал разные методы и не нашел правильного. 🙁