示例来源HTML:
<p>
<strong>Byline:</strong> Introductory text.
<a href="1.html" target="">Link 1</a> |
<span class="foo"></span>
<a href="2.html">Link 2</a>
<a href="3.html">Link 3</a>
</p>
我正在尝试做什么:
我想加载HTML,删除链接和其他无关标签(如果我必须指定它们是什么的话,不是问题),像'|'这样的东西等等,保留“Byline”和“Introductory text”。这是一个解析第三方网站的脚本,因此我无法添加CSS类等。
我首先尝试使用(现在不是非常广泛使用)PHP Simple HTML DOM Parser,最近一直尝试DOMDocument。
但是我无处可去 - 例如现在我甚至无法遍历<p>
下面的树:
$doc = new DOMDocument();
$doc->loadHTML($somehtml);
$p = $doc->getElementsbyTagName('p');
foreach($p->childNodes as $item) {
...
}
上面给出了foreach
行的'Undefined property:DOMNodeList :: $ childNodes'错误。
另外:我发现令人沮丧的是,我显然无法使用print_r
,var_dump
等来显示DOM,而且当我使用xpath->query
(我使用{{1}}循环链接时这里似乎不合适,因为我不是真的想搜索/提取特定的东西,而是采取HTML,摆脱我不想要的节点然后保存它)使用print_r向我显示链接文本而不是内容HREF = “”
有人可以推荐一个可理解的DOMDocument指南吗?在实际例子中,PHP手册似乎很短。