使用XPath选择CSS类

我只想自行选择一个名为.date的类

由于某种原因,我无法使它正常工作。如果有人知道我的代码出了什么问题,将不胜感激。

@$doc = new DOMDocument();

@$doc->loadHTML($html);

$xml = simplexml_import_dom($doc); // just to make xpath more simple

$images = $xml->xpath('//[@class="date"]');

foreach ($images as $img)

{

echo $img." ";

}

回答:

我想写这个问题的规范答案,因为上面的答案有问题。

回答:

该 选择器:

.foo

将选择具有 类的任何元素。

尽管XPath比CSS强大,但是 。但是,有一个解决方案。

回答:

的等效选择器是:

//*[contains(concat(" ", normalize-space(@class), " "), " foo ")]

该函数对空格进行归一化处理,以去除前导和尾随空格(并且还将空格字符序列替换为单个空格)。

(从更一般的意义上讲)这也等同于CSS选择器:

*[class~="foo"]

它将匹配任何其 属性值是由空格分隔的值的列表的元素,其中一个值与 完全相等。

回答:

XPath选择器:

//*[@class="foo"]

不起作用!例如,因为它不匹配具有多个类的元素

<div class="foo bar">

如果在类名周围有多余的空格,它也将不匹配:

<div class="  foo ">

“改进”的XPath选择器

//*[contains(@class, "foo")]

也不行!因为它错误地将元素与 类匹配,例如

<div class="foobar">

以上是 使用XPath选择CSS类 的全部内容, 来源链接: utcz.com/qa/405404.html

回到顶部