У меня есть следующее, которое печатает 100
- это правильно - однако я должен использовать print_r()
что, очевидно, неверно
$dom = new DOMDocument();
$dom->loadHTML('<span class="foo" id="bar" itemprop="price">100</span>');
$xpath = new DOMXPath($dom);
$results = $xpath->evaluate('number(//*[@itemprop="price"])');
print_r($results);'
Итак, как мне получить единственный результат, который равен 100? Я пробовал $results[0]
который не работал.
Уверен, это просто, но избивать меня!
Используйте метод ->item()
для результата для доступа к узлам DOM, возвращаемым вашим запросом XPath. Также вы должны использовать метод query()
когда хотите запустить запрос XPath. Я никогда не понимал цели использования функции evaluate()
.
$xpath = new DOMXPath($dom);
$results = $xpath->query('//*[@itemprop="price"]');
echo $results->item(0)->nodeValue;
DOMXPath-> query() возвращает экземпляр DOMNodeList
который вы можете перебирать с помощью foreach()
или получить доступ к определенному элементу результата с помощью метода ->item()
. Его единственным аргументом является индекс, основанный на 0, в возвращаемом списке.
print_r()
, я вместо этогоprint_r()
ваш код с помощьюecho
.