我只想自己选择一个名为 .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." ";
}
原文由 Teddy13 发布,翻译遵循 CC BY-SA 4.0 许可协议
我想写这个问题的规范答案,因为上面的答案有问题。
我们的问题
CSS 选择器:
将选择具有类 foo 的任何元素。
你如何在 XPath 中做到这一点?
尽管 XPath 比 CSS 更强大, 但 XPath 没有 CSS 类选择器的本机等价物。但是,有一个解决方案。
正确的做法
XPath 中的等效选择器是:
函数 normalize-space 去除前导和尾随空白(并且还用单个空格替换空白字符序列)。
(在更一般的意义上)这也等同于 CSS 选择器:
它将匹配任何其 class 属性值为空格分隔值列表的元素,其中一个值恰好等于 foo 。
一些明显但错误的方法
XPath 选择器:
不起作用!因为它不会匹配具有多个类的元素,例如
如果类名周围有任何额外的空格,它也不会匹配:
“改进的”XPath 选择器
也不管用!因为它错误地将元素与类 foobar 匹配,例如
感谢这个家伙,他是我在网上找到的最早发布的解决这个问题的方法:http: //dubinko.info/blog/2007/10/01/simple-parsing-of-space-seprated-attributes-在-xpathxslt/