我只想 Select 一个名为.日期

由于某种原因,我无法让它工作.如果有人知道我的代码有什么问题,我们将不胜感激.

@$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." ";
}

推荐答案

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

我们的问题

CSS Select 器:

.foo

将 Select 任何具有类foo的元素.

How do you do this in XPath?

尽管XPath比CSS更强大,但是XPath doesn't have a native equivalent of a CSS class selector.然而,有一个解决办法.

正确的方法

XPath中的等效 Select 器为:

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

函数normalize-spacego 除前导空格和尾随空格(并且还将空格字符序列替换为单个空格).

(在更一般的意义上)这也相当于CSS Select 器:

*[class~="foo"]

它将匹配任何元素,其class属性值是由空格分隔的值组成的列表,其中一个值正好等于foo.

做这件事的几种明显但错误的方式

XPath Select 器:

//*[@class="foo"]

不行!因为它不会匹配一个有多个类的元素,例如

<div class="foo bar">

如果类名周围有任何额外的空格,它也将不匹配:

<div class="  foo ">

"改进的"XPath Select 器

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

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

<div class="foobar">

这要归功于这个家伙,他是我在网上找到的最早的解决方案:

Php相关问答推荐

在AJX请求中使用简写后,FormData出现非法调用错误

PHP如何将ARRAY_MAP与Reset()配合使用

用于计算付款费用的WooCommerce管理编辑产品中的自定义复选框

使用MySQLi使用连接字符串设置字符集

在PHP 8.2 Gloogle云引擎上加载大型php文件速度缓慢

在WooCommerce中以编程方式添加特定产品后,将价格设置为零

如何在自定义邮箱内容中获取WooCommerce订单项目的详细信息?

在 WooCommerce 更新结帐事件上动态更新自定义内容

invalid_grant 和无效的 JWT 签名

AWS S3:当对象名称包含 % 时复制对象失败并出现错误 - 无效的复制源编码

PHP:数组的等边

VS Code 对 PHP 上从父类继承的方法报告误报

在 WooCommerce wc_get_products 函数中处理自定义分类法

为WooCommerce中的运输方式ID设置必填的 checkout 订单备注字段

根据购买产品的自定义字段替换WooCommerce添加到购物车按钮

WooCommerce checkout 流程中基于所选选项添加自定义费用

如何使用 WhatsApp Cloud API 向 WhatsApp 发送消息,而无需在发送消息之前注册收件人号码?

Laravel Docker 几个数据库

htaccess 无限循环问题

Laravel 从嵌套数组的第二级获取最后一项