Получить элемент по ClassName с помощью метода DOMdocument ()

Вот чего я пытаюсь достичь: получить все продукты на странице и поместить их в массив. Вот код, который я использую:

$page2 = curl_exec($ch); $doc = new DOMDocument(); @$doc->loadHTML($page2); $nodes = $doc->getElementsByTagName('title'); $noders = $doc->getElementsByClassName('productImage'); $title = $nodes->item(0)->nodeValue; $product = $noders->item(0)->imageObject.src; 

Он работает для $title but не для продукта. Для информации в HTML-коде тег img выглядит так:

 <img alt="" class="productImage" data-altimages="" src="xxxx"> 

Я смотрел на это ( PHP DOMDocument, как получить элемент? ), Но я до сих пор не понимаю, как заставить его работать.

PS: Я получаю эту ошибку:

Вызов неопределенного метода DOMDocument::getElementsByclassName()

Я, наконец, использовал следующее решение:

  $classname="blockProduct"; $finder = new DomXPath($doc); $spaner = $finder->query("//*[contains(@class, '$classname')]"); 

https://stackoverflow.com/a/31616848/3068233

Связывание этого ответа, поскольку это помогло мне больше всего с этой проблемой.

 function getElementsByClass(&$parentNode, $tagName, $className) { $nodes=array(); $childNodeList = $parentNode->getElementsByTagName($tagName); for ($i = 0; $i < $childNodeList->length; $i++) { $temp = $childNodeList->item($i); if (stripos($temp->getAttribute('class'), $className) !== false) { $nodes[]=$temp; } } return $nodes; } 

Theres код и heres использование

 $dom = new DOMDocument('1.0', 'utf-8'); $dom->loadHTML($html); $content_node=$dom->getElementById("content_node"); $div_a_class_nodes=getElementsByClass($content_node, 'div', 'a');