0

我已经对此进行了一段时间的修改,但似乎无法正确处理。

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

<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;

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

4

1 回答 1

0

您似乎在$scriptContents每次迭代都覆盖,这可能不是您想要的。脚本当前的运行方式,您的输出将仅限于最后一个脚本标签的前两个兄弟姐妹(无论它们本身是否实际上是脚本标签)以及最后一个脚本标签。

如果您严格尝试输出脚本标签,您可以这样做:

$xpath = new DOMXPath($dom);
$items = $xpath->query('//script');
foreach ($items as $item) {
     echo $item->nodeValue . "\r\n\r\n";
}
于 2013-07-24T15:26:50.470 回答