【发布时间】:2012-02-20 13:46:11
【问题描述】:
我试图在 DOMDocument 节点的循环中通过某个类名(类名 ='foo' 的 div)来查找子节点。如果存在,它应该将我的 foo 值设置为 1:
我的 HTML $document 看起来像:
...
<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() 可能不是正确的方法,但我已经尝试了不同的方法,但没有找到正确的方法。 :(
【问题讨论】:
标签: php xpath domdocument