DOMDocument获取每个匹配元素的nodeValue


DOMDocument get nodeValue of each matching element

我已经破解了一段时间,但似乎无法正确处理。

当脚本元素的数量可变时,如何获取所有脚本元素的内容。我的示例标记如下:

<div></div>
<iframe><iframe>
<script>xxxx</script>
<script>xxxx</script>
<script>xxxx</script>

到目前为止,我所拥有的只有在我保持脚本数量不变的情况下才有效——我没有正确地迭代数组,但我完全被DOMXPath文档所抛弃

$dom = new DOMDocument();
$dom->preserveWhiteSpace = true;
@$dom->loadHtml($form_content);
$xpath = new DOMXPath($dom);
$items = $xpath->query('//script');
foreach ($items as $item) {
     $scriptContents = $item->previousSibling->previousSibling->nodeValue . "'r'    n'r'n";
     $scriptContents .= $item->previousSibling->nodeValue . "'r'n'r'n";
     $scriptContents .= $item->nodeValue . "'r'n'r'n";
}
echo $scriptContents;

我该怎么做?我已经搜索SO一段时间了,但似乎可以应用一个有效的解决方案。提前感谢-b

每次迭代都会覆盖$scriptContents,这可能不是您想要的。按照脚本当前的操作方式,您的输出将仅限于最后一个脚本标记的前两个同级(无论它们本身是否实际是脚本标记)以及最后一个剧本标记。

如果你严格地试图输出脚本标签,你可以这样做:

$xpath = new DOMXPath($dom);
$items = $xpath->query('//script');
foreach ($items as $item) {
     echo $item->nodeValue . "'r'n'r'n";
}