2010-07-16 60 views
2

我有一個我想要編輯的html頁面。我想刪除以下某個部分:用PHP刪除HTML部分

<ul class="agentDetail"> 
........ 
....... 
........ 
</ul> 

我希望能夠刪除它們之間的標籤及其所有內容。這個想法是編輯一個頁面並重新顯示它,減去一些我不想看到的數據(因此刪除了一些部分)。

我該如何在php中做到這一點?

+1

可能重複附上那些線[PHP的整潔:去除體內的鏈接和風格標籤](http://stackoverflow.com/問題/ 3053349/php-tidy-remove-link-and-style-tags-inside-body) - 你應該可以通過稍微修改DOM解決方案來解決這個問題 – Gordon 2010-07-16 08:53:24

回答

2

我會推薦將代碼解析爲XML,然後使用XPath來取消/選擇您需要的節點。這裏有一個出發點:

$dom = getDom("http://www.stackoverflow.com"); 
parseDom($dom); 

function getDom($url) 
{ 
    $contentUtf8 = $this->fetchDataFromUrl($url); 
    $htmlData = mb_convert_encoding($contentUtf8, 'HTML-ENTITIES', "UTF-8"); 

    $dom = new DomDocument('1.0', 'utf-8'); 
    $dom->substituteEntities = false; 
    $dom->preserveWhitespace = false; 
    @$dom->loadHTML($htmlData); 

    return $dom; 
} 

function parseDom($dom) 
{ 
    $xpath = new DOMXPath($dom); 
    $nodes = $xpath->query("//ul[@class='agentDetail']"); 

    // manipulate nodes here... 
} 
+0

查看['libxml_use_internal_errors'](http ://de3.php.net/manual/en/function.libxml-use-internal-errors.php)替代抑制loadHTML錯誤 – Gordon 2010-07-16 09:07:34

0

您是直接託管此頁面還是正在讀取它到php,並在解析後回顯它?在前一種情況下,你可以給它一個.php擴展和內<? if(0): ?><? endif; ?>

<?php if(0): ?> 
<ul class="agentDetail"> 
........ 
....... 
........ 
</ul> 
<?php endif; ?>