我仍在忙着学习php简单的DOM并遇到了一个令人费解的场景。没有唯一标记可用于指定我想要的内容,它只有大量的<a>
标记。除了它们在评论之间分组的事实。
如果我做了
foreach($html->find('comment a') as $a){
$articles[] = array($a->href,$a->innertext);
}
我得到了很多东西。那么有没有办法指定我想要第一个和第二个注释之间的所有<a>
标签,第三个和第四个等等。或者DOM是不是最好的东西,在那里只是一个混乱的情况下使用的HTML。
段:
<! FIRST COLUMN STARTS HERE>
<center><table CELLPADDING="3" WIDTH="100%"><tr>
<td ALIGN="LEFT" VALIGN="TOP" WIDTH="30%"><tt><b>
<A HREF="http://foo.bar">Text text text...</A><BR><BR>
由于
答案 0 :(得分:0)
这是可能的,但考虑标签的顺序而不是它们的嵌套可能更好。
$articles = array(array());
foreach($html->find('comment, a') as $a) {
if ($a->nodetype == HDOM_TYPE_COMMENT) {
$articles[] = array();
} else {
$articles[count($articles) - 1][] = array($a->href,$a->innertext);
}
}
这个(相当粗略的)代码将创建一个数组数组,一个用于第一个注释之前的任何<a>
,一个用于每个注释,每个数组包含零个或多个文章,具体取决于它之间出现的链接数量评论和下一个。
顺便说一句,此代码不适用于您提供的代码段,因为其中的注释以<!
开头,以>
结尾,而不是<!--
和{{1 }}, 分别。我假设评论在实际的HTML标记中正确显示。
编辑:好的,发现了“评论”,因为它们在代码段中。在这种情况下,似乎simplehtml调用以-->
开头的所有其他标记:“unknown”。因此,如果您将其添加到上面的代码中,您就拥有了链接数组:
<!