【发布时间】:2015-01-23 00:10:10
【问题描述】:
我需要解析一些 html 文件,问题是这个 html 的结构充满了我不关心的标签,我没有说明我会找到什么。
我想直接在<body> 标记下获取所有<p> 标记,不包括<body> 的其他子节点并读取<p> 的子节点(如果有的话)(除了一些特定的标记,我可以管理一些例外)
例如:
<body>
<node1>
<p></p>
<node1>
<p></p>
<p>
<a>
</a>
<p>
</body>
我想排除 node1 及其子节点,获取所有其他节点
其实我的代码是:
$body = $dom->getElementsByTagName("body");
foreach($body as $node) {
if($node->childNodes->length) {
foreach($node->childNodes as $n) {
//insert here check: if nodeName != 'p'
$text .= $n->nodeName;
}
}
}
我会遍历每个子节点并检查节点名称
如何在第一个查询中排除与p 不同的主体子节点?我试过$dom->getElementsByTagName("body/p");,但它不起作用
有没有更好的方法来管理和查询我的 HTML 文件?
谢谢
【问题讨论】:
-
您介意通过
jquery解决它还是只清理javascript? -
@Bandon 两者都不是,考虑到问题是关于 PHP 的。
-
你也应该看看xpath
-
我会用 xslt 来做这个