2012-07-04 148 views
-1

我正在編寫一個利用頁面源代碼的程序,但是在某些情況下,我想忽略它的一部分。最終,我想刪除具有id導航及其所有內容的標籤,然後輸出HTML。刪除標籤及其內容

Editted代碼:

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

你看過jQuery嗎? –

+0

它需要是PHP。 –

+0

是的,是的,還有另一個網絡爬蟲...嘗試使用xPath:http://php.net/manual/en/domxpath.query.php並選擇「// navigation」(好的,在這種情況下可能會過度殺傷)。另外,在調用'loadHTML'後,執行'echo $ lol-> saveHTML();'以確保它實際上正確地加載它...... –

回答

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 tutorial開始學習一些更多的好地方。

(如果這不起作用,我會回覆調用以發佈相關的HTML)。

+0

漂亮,趕上! –

+0

太棒了。謝謝約翰。 –

相關問題