0

我正在使用 Simple HTML DOM,我正在尝试获取一个同时包含 ID 和一组类的元素,如下所示:

<div id="leadtxt" class="caption"></div>

foreach($html->find('div #leadtxt .caption', 0) as $element) 
       echo $element->outertext;

根据文档,这应该让我得到具有 id#leadtxt并且也具有类的 div.caption 问题是它没有。我该怎么写这个?

4

2 回答 2

1

您的代码将尝试在 ID 为 的元素中查找类为 的caption 元素leadtxt。由于您有一个 ID,并且 ID 必须是唯一的,因此简单地使用它会更有意义:

$html->find('#leadtxt', 0)

你的问题的确切答案是这样的:

$html->find('div#leadtxt.caption', 0)

请注意缺少空间 - 它会找到 ID 为leadtxt且类为的 div 元素caption。但同样,这是多余的,上述方法会更好,而且很可能更快。

编辑:这里有一些进一步的例子,因为我不清楚你到底想要做什么。

以下将查找 ID 为leadtxt 类为 的所有元素caption

$html->find('#leadtxt, .caption')
// OR specify the fact you only want DIV elements...
$html->find('div#leadtxt, div.caption')

这将指定您想要具有任何给定类(一个或多个)的元素:

$html->find('.classone, .classtwo, .classthree')
// OR just the DIV elements with any of these classes:
$html->find('div.classone, div.classtwo, div.classthree')

这将指定具有所有给定类的任何元素:

$html->find('.classone.classtwo.classthree')
// OR again, just DIV elements...
$html->find('div.classone.classtwo.classthree')

编辑 2:正如您已经说过的,只要您提供一个同时指定多个类/ID 的选择器,Simple HTML DOM 似乎就会失败。我只能假设这是图书馆中尚未解决的弱点。这是一个耻辱,因为这意味着它不能与上面给出的标准 CSS 选择器一起使用,尽管声称。

于 2013-08-03T08:38:14.393 回答
1

Mark Embling 是正确的,他的方法应该有效,但这不是因为 simple 并不是一个很好的库。这些中的任何一个都应该起作用:

$html->find('div#leadtxt[class="caption"]', 0);
$html->find('div.caption[id="leadtxt"]', 0);

或者,您可以考虑切换到 phpquery

于 2013-08-04T01:16:50.423 回答