gpt4 book ai didi

php - 通过类名获取 DOM 元素

转载 作者:IT老高 更新时间:2023-10-28 11:47:37 24 4
gpt4 key购买 nike

我正在使用 PHP DOM我正在尝试在具有给定类名的 DOM 节点中获取元素。获取该子元素的最佳方法是什么?

更新:我最终为 PHP 使用了 Mechanize,它更容易使用。

最佳答案

更新:*[@class~='my-class'] css 选择器的 Xpath 版本

所以在我在下面回应 hakre 的评论后,我很好奇并查看了 Zend_Dom_Query 背后的代码。看起来上面的选择器被编译为以下 xpath(未经测试):

[contains(concat(' ', normalize-space(@class), ' '), ' my-class ')]

所以 PHP 将是:

$dom = new DomDocument();
$dom->load($filePath);
$finder = new DomXPath($dom);
$classname="my-class";
$nodes = $finder->query("//*[contains(concat(' ', normalize-space(@class), ' '), ' $classname ')]");

基本上,我们在这里所做的只是规范化 class 属性,这样即使单个类也被空格包围,而完整的类列表也被空格包围。然后用空格附加我们正在搜索的类。通过这种方式,我们有效地寻找并仅找到 my-class 的实例。


使用 xpath 选择器?

$dom = new DomDocument();
$dom->load($filePath);
$finder = new DomXPath($dom);
$classname="my-class";
$nodes = $finder->query("//*[contains(@class, '$classname')]");

如果它只是一种类型的元素,您可以将 * 替换为特定的标记名。

如果您需要使用非常复杂的选择器执行很多此操作,我会推荐 Zend_Dom_Query支持 CSS 选择器语法(a la jQuery):

$finder = new Zend_Dom_Query($html);
$classname = 'my-class';
$nodes = $finder->query("*[class~=\"$classname\"]");

关于php - 通过类名获取 DOM 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6366351/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com