我尝试使用以下元素获取nextSibling
并且以下代码不起作用。
我有一个错误如下
PHP 警告:为 /php/dom.php 第 35 行中的 foreach() 提供的参数无效
这肯定是由 foreach 循环中的 null 值引起的。
但如果我修改它以使用前一个元素previousSibling
它按预期工作。
$doc = new DOMDocument();
$html = <<<HTML
<html>
<body>
<ul id="list">
<li>Foo</li>
<li>Bar</li>
</ul>
<h2 class = 'test'>heading2</h2>
<ul id="list2">
<li>list1</li>
<li>list2</li>
</ul>
</body>
</html>
HTML;
$doc ->loadHTML($html);
$DOMNodelist = $doc->getElementsByTagName('*');
foreach($DOMNodelist as $node) {
if ($node -> hasAttribute('class')) {
foreach($node -> nextSibling ->childNodes as $morenodes) {
print_r($morenodes);
}
}
}
因为您的文档有空格分隔元素,所以您实际上需要使用:
nextSibling->nextSibling
或者,我会这样做,因为你已经有一个从生成的列表'*'
对于所有元素,我将其写为:
foreach($DOMNodelist as $i=>$node) {
if ($node -> hasAttribute('class')) {
foreach($DOMNodelist->item($i+1)->childNodes as $morenodes) {
print_r($morenodes);
}
}
}
或者您可以从文档中删除空格:
$html = <<<HTML
<html><body><ul id="list"><li>Foo</li><li>Bar</li></ul><h2 class = 'test'>heading3</h2><h3>heading3</h3><ul id="list2"><li>list2</li><li>list2</li></ul></body></html>
HTML;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)