Я использую PHP DomDocument и пытаюсь очистить что-то похожее на это:
<div itemprop='movie'>Fight Club</div>
он также может выглядеть так:
<span itemprop='musician'>Ozzy Osbourne</span>
Я хочу захватить все itemprop='n'
на странице и поместить их в массив для хранения своего значения nodevalue и связанного с ним имени itemprop. Мой код выглядит так:
function getItemprops(){ foreach($this->dom->getAttribute("itemprop") as $buffer) { $itempropList = array( 'theNodeValue' => $buffer->nodeValue, 'theItemprop' => $buffer->getAttribute("itemprop") ) return $itempropList; } }
Мой код должен получить массив где-то рядом:
array ( array( 0 => "theNodeValue" => "Fight Club", "theItemprop" => "movie" 1 => "theNodeValue" => "Fight Club", "theItemprop" => "movie" ) )
К сожалению, мой код возвращает Fatal error: Call to undefined method DOMDocument::getAttribute()
.
Поэтому в основном я хочу выделить все itemprop=""
" и поместить их в массивы.
Спасибо за помощь!
Вы должны использовать XPath, чтобы сначала выбрать все узлы с вашим обязательным атрибутом, затем цикл trhough возвращенных узлов для получения значения текста и значения атрибута; как это
$d = new DOMDocument(); $d->loadHTML($xmlsource); $xpath = new DOMXPath($d); $nodes = $xpath->query('//*[@itemprop]'); //this catches all elements with itemprop attribute foreach ($nodes as $node) { // do your stuff here with $node