2010-07-16 63 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; ?>