Я бы порекомендовал следующий 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
}
}
Демо