PHP Простой HTML DOM Parser DIV селектор

У меня есть div, и хочу получить 7,89 номер, мой селектор

<div class="titlePageSprite star-box-giga-star"> 7,89 </div>

$ret['Rating'] = $html->find('div.star-box-giga-star')->content;

но я получаю пустой массив, что я делаю не так?

3 ответа

Решение

Попробуй это:

$ret['Rating'] = $html->find('div.star-box-giga-star', 0)->innertext;

find() возвращает DOMNodeList ВСЕХ элементов, которые соответствуют параметрам поиска, даже если есть только один (или ни один) совпадающий элемент. Вы можете конкретно указать, какой узел возвращать, с помощью необязательного параметра:

$rating = $html->find('div.star-box-giga-star', 0)
                                              ^^^^---return 1st node (0-based)

или что-то вроде глупости

$nodes = $html->find(...);
foreach($nodes as $node) {
     $rating = $node->content;
     break;
}

Вместо этого используйте XPath:

   foreach($xpath->query('//div[contains(@class, "star-box-giga-star")]') as $rating) {
      echo $rating->nodeValue, '<br>';
   }
Другие вопросы по тегам