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>';
}