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

如何使用 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');

请问我在这里缺少什么?


一只斗牛犬
浏览 77回答 3
3回答

素胚勾勒不出你

如果我正确理解您要寻找的内容,这应该有效:$rating&nbsp;=&nbsp;$xp->query('//span[contains(@class,"ui_bubble_rating")]/@class'); echo&nbsp;explode("&nbsp;bubble_",$rating[0]->textContent)[1];输出:45

千巷猫影

你的@class正在寻找直接匹配的class="ui_bubble_rating"您可能必须使用该contains()函数在字符串中进行搜索//span[contains(@class,'ui_bubble_rating')]

慕侠2389804

我推荐以下 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  }}演示
打开App,查看更多内容
随时随地看视频慕课网APP