-1

我正在编写一个利用页面源代码的程序,但是在某些情况下我想忽略它的一部分。最终,我想删除具有 id 导航及其所有内容的标签,然后输出 HTML。

编辑代码:

<?php
$lol = new DOMDocument();
$fh = fopen("test.txt", "r");

$lol->loadHTML(fread($fh, filesize("test.txt")));
$lol->saveHTML();

 $xpath = new DOMXpath($lol);
 $nodeList = $xpath->query('//navigation');
 foreach ($nodeList as $element) {
    $element->parentNode->removeChild($element);
 }

/*
foreach($divs AS $div) {
    if($div->getAttribute('id') == "navigation") {
        $lol->removeChild($div);
    }
}
*/


$out = $lol->saveHTML();

echo $out;
?>

从我在网上阅读的内容来看,我本以为这会起作用,但事实并非如此。

任何建议表示赞赏。

test.txt 只是一个带有页面源代码的文本文件。

4

1 回答 1

2

看起来评论让你大部分时间都在那里。看起来 XPath 需要稍微调整一下。$xpath->query('//navigation')将搜索<navigation>标签,而您正在寻找带有id导航的标签:

 $xpath = new DOMXpath($lol);
 $nodeList = $xpath->query("//*[@id='navigation']");
 foreach ($nodeList as $element) {
    $element->parentNode->removeChild($element);
 }

XPath 对于这类事情非常强大,这个W3 教程是开始学习更多内容的好地方。

(如果这不起作用,我会回应发布相关 HTML 的调用)。

于 2012-07-04T23:52:40.573 回答