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