使用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