我有一个我想要编辑的html页面。我想删除以下某个部分:用PHP删除HTML部分
<ul class="agentDetail">
........
.......
........
</ul>
我希望能够删除它们之间的标签及其所有内容。这个想法是编辑一个页面并重新显示它,减去一些我不想看到的数据(因此删除了一些部分)。
我该如何在php中做到这一点?
我有一个我想要编辑的html页面。我想删除以下某个部分:用PHP删除HTML部分
<ul class="agentDetail">
........
.......
........
</ul>
我希望能够删除它们之间的标签及其所有内容。这个想法是编辑一个页面并重新显示它,减去一些我不想看到的数据(因此删除了一些部分)。
我该如何在php中做到这一点?
我会推荐将代码解析为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...
}
查看['libxml_use_internal_errors'](http ://de3.php.net/manual/en/function.libxml-use-internal-errors.php)替代抑制loadHTML错误 – Gordon 2010-07-16 09:07:34
您是直接托管此页面还是正在读取它到php,并在解析后回显它?在前一种情况下,你可以给它一个.php
扩展和内<? if(0): ?>
<? endif; ?>
块
<?php if(0): ?>
<ul class="agentDetail">
........
.......
........
</ul>
<?php endif; ?>
的
可能重复附上那些线[PHP的整洁:去除体内的链接和风格标签](http://stackoverflow.com/问题/ 3053349/php-tidy-remove-link-and-style-tags-inside-body) - 你应该可以通过稍微修改DOM解决方案来解决这个问题 – Gordon 2010-07-16 08:53:24