【发布时间】:2015-11-05 18:53:17
【问题描述】:
我正在尝试使用 > 组合子选择父母 div.element 的(直接)孩子,但它失败了。
HTML:
<div class="element">
<p>test</p>
</div>
<div class="element">
<div class="selected">
<p>test2</p>
</div>
</div>
PHP:
$html->find('div.element > p', 0);
我希望选择直接的p 元素。
如果它是一个嵌套的后代 - 它不应该返回任何东西,但它会返回 test2。
我如何写它来返回test,而不是test2?谢谢
更新:这里关于 SO 的普遍共识似乎是简单的 HTML DOM 是不好的。我最终按照 Phil 的建议使用 PHP 的 DOMDocument 编写了我的代码。我确实测试了 nevermind 的解决方案,它也确实有效。感谢所有帮助和快乐编码
【问题讨论】:
-
test2 以任一方式返回。
>似乎什么都不做 -
试试这个:$html->find(div.element > p);
-
SimpleHTMLDom 是一个非常糟糕的库,我怀疑它是否支持直接子选择器。请参阅此页面以获取更好替代方案的列表 ~ stackoverflow.com/questions/3577641/…
-
@khuderm 你可以使用其他东西来完成这个任务(我推荐内置的 Dom 扩展)。这并不意味着您需要删除 SimpleHTMLDom 或重构任何其他代码
-
对于具有完整 css 支持的简单 html dom 替换 try this。是的,简单的 html dom 很糟糕,但它也是一个非常古老的库,有一段时间它就是我们所拥有的。
标签: php css simple-html-dom