用PHP删除HTML部分

时间:2010-07-16 08:46:44

标签: php html screen-scraping

我有一个我要编辑的html页面。我想删除以下某个部分:

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

我希望能够删除标签及其之间的所有内容。我的想法是编辑一个页面并重新显示它,减去一些我不想看到的数据(因此删除了一些部分)。

我怎么能在php中做到这一点?

2 个答案:

答案 0 :(得分: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...
}

答案 1 :(得分:0)

您是直接托管此页面还是将其读入php,并在解析后回显它?在前一种情况下,您可以为其添加.php扩展名,并将这些行括在<? if(0): ?> <? endif; ?>块中

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