删除标签及其内容

时间:2012-07-04 16:00:51

标签: php dom

我正在编写一个利用页面源代码的程序,但在某些情况下我想忽略它的一部分。最后,我想删除具有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只是一个包含页面源代码的文本文件。

1 个答案:

答案 0 :(得分:2)

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

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

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

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