Как подсчитать div определенного класса с помощью PHP DOMDocument

У меня есть html-строка

html_string = '<div class="quote" post_id="48" style="border:1px solid #000;padding:15px;margin:15px;" user_id="1" user_name="rashidfarooq">This is not True</div> <div class="quote" post_id="49" style="border:1px solid #000;padding:15px;margin:15px;" user_id="1" user_name="rashidfarooq">This is good for me</div> <div class="genuine" post_id="49" style="border:1px solid #000;padding:15px;margin:15px;" user_id="1" user_name="rashidfarooq">This is good for me</div>'; 

Я хочу считать div, имеющим класс name = "quote", я попробовал

  $dom = new DOMDocument; $dom->loadHTML($html_string); $divs = $dom->getElementsByTagName('div'); $length = $divs->length; 

Но $ length дает общее количество div. Как я могу подсчитать только divs, имеющие имя класса = «quote». Есть ли какая-либо функция PHP Native, которая может это сделать.

Related of "Как подсчитать div определенного класса с помощью PHP DOMDocument"

Кажется, для этого нет родной функции domdocument, но ее легко написать самостоятельно:

 function getElementsByClassName($elements, $className) { $matches = array(); foreach($elements as $element) { if (!$element->hasAttribute('class')) { continue; } $classes = preg_split('/\s+/', $element->getAttribute('class')); if ( ! in_array($className, $classes)) { continue; } $matches[] = $element; } return $matches; } $dom = new DOMDocument; $dom->loadHTML($html_string); $divs = getElementsByClassName($dom->getElementsByTagName('div'), 'quote'); $length = $divs->length; 

Попробуйте

 $DOMResponse = new \DOMDocument(); $DOMResponse->loadXML($data); $xpath = new \DOMXPath($DOMResponse); $length = $xpath->query('/*[@class="quote"]')->length; 

где quote – это класс, который вы хотите запросить

Заметка

Если вы также хотите фильтровать до, для divs, вам нужно запросить divs до и затем применить запрос, который я предложил выше

Что-то вроде этого

 $length = $xpath->query('//div[@class="quote"]')->length;