为了账号安全,请及时绑定邮箱和手机立即绑定

在 PHP 中使用 XPath 从元素获取类

在 PHP 中使用 XPath 从元素获取类

PHP
一只斗牛犬 2023-09-15 09:50:43
如何使用 XPath 从该 HTML 代码中获取数字 45:<span class="ui_bubble_rating bubble_45"></span>这是我到目前为止所尝试的:$rating = $xp->query('//span[@class="ui_bubble_rating"]'); $datas[$activity]['rating'] = $rating->item(0)->getAttribute('class');请问我在这里缺少什么?
查看完整描述

3 回答

?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

如果我正确理解您要寻找的内容,这应该有效:

$rating = $xp->query('//span[contains(@class,"ui_bubble_rating")]/@class');
echo explode(" bubble_",$rating[0]->textContent)[1];

输出:

45


查看完整回答
反对 回复 2023-09-15
?
千巷猫影

TA贡献1829条经验 获得超7个赞

你的@class正在寻找直接匹配的class="ui_bubble_rating"

您可能必须使用该contains()函数在字符串中进行搜索

//span[contains(@class,'ui_bubble_rating')]


查看完整回答
反对 回复 2023-09-15
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

我推荐以下 XPath,如:

//span[contains(concat(" ", normalize-space(@class), " "), " ui_bubble_rating ")]

然后,您可以使用正则表达式检索要查找的号码,该正则表达式查找以 开头的一系列数字bubble_


$ratingsElements = $xp->query('//span[contains(concat(" ", normalize-space(@class), " "), " ui_bubble_rating ")]');


if ($ratingsElements->length > 0) {

  $firstRatingElement = $ratingsElements->item(0);

  if (preg_match('/(?<=\bbubble_)\d+/', $firstRatingElement->getAttribute('class'), $matches)) {

    $datas[$activity]['rating'] = $matches[0];  // 45

  }

}

演示


查看完整回答
反对 回复 2023-09-15
  • 3 回答
  • 0 关注
  • 72 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信