我已经破解了一段时间,但似乎无法正确处理。
当脚本元素的数量可变时,如何获取所有脚本元素的内容。我的示例标记如下:
<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";
}