【发布时间】:2013-01-10 18:12:53
【问题描述】:
我疯狂地搜索,但没有找到解决方案。问题很简单。
假设我有 3 个 DIV:
<div class="class1">
<div class="subclass"> TEXT1 </div>
</div>
<div class="class2">
<div class="subclass"> TEXT2 </div>
</div>
<div class="class1 class2">
<div class="subclass"> TEXT3 </div>
</div>
所以,很简单。我只想找到同时具有 class1 和 class2 的 TEXT3。使用 Simple HTML DOM Parser,我似乎无法让它工作。
这是我尝试过的:
foreach($html->find("[class=class1], [class=class2]") as $item) {
$items[] = $item->find('.subclass', 0)->plaintext;
}
问题是,
find("[class=class1], [class=class2]")
它正在查找所有这些,因为逗号就像一个 OR,如果我离开逗号,它会在 class1 中寻找嵌套的 class2。我只是在寻找一个 AND...
编辑
感谢 19greg96 我发现
div[class=class1 class2]
有效,问题在于它会按顺序查找这两个。假设我有
<div class="class1 class2">
<div class="subclass"> TEXT3 </div>
</div>
然后它可以工作,如果我有
<div class="class1 class2 class3">
<div class="subclass"> TEXT3 </div>
</div>
当我放一个星号时它会起作用,因为它会寻找子字符串:
div[class*=class1 class2]
问题
我只知道 class1 和 class3 在那里,但可能还有其他的,并且是随机顺序的。那仍然行不通。知道如何以任何随机顺序查找 A 和 B 吗?这样
div[class=class1 class3]
适用于该示例吗?
【问题讨论】:
-
您特别想要同时具有 .class1 和 .class2 的元素,或者任何具有 2 个或更多类的元素?
-
仅包含 .class1 和 .class2 的元素
-
已编辑:问题仅部分解决
标签: php class parsing html simple-html-dom