Я использую PHP-HTML-парсер пакет (на основе simplehtmldom) загружается через Composer и анализирует строку HTML, однако при использовании $ dom-> find () для обхода всех элементов, которые я ищу, он обнаруживает только первый элемент (из 29).
require __DIR__ . "/vendor/autoload.php";
$dom = new PHPHtmlParser\Dom;
$dom->load($result); // $result is the output of a cURL request
$classes = $dom->find('li[class=SPECIALCLASS]');
echo count($classes);
foreach($classes as $class){
echo $class->text;
}
Выход: 1
Образец HTML:
<li class="SPECIALCLASS "></li>
<li class="SPECIALCLASS SOMEOTHERCLASS "></li>
РЕДАКТИРОВАТЬ: полное удаление селектора класса приводит к возвращению тегов li 5/29, поэтому я чувствую, что здесь есть что-то большее.
Попробуйте что-то вроде этого:
$dom->find('li[contains(@class, "SPECIALCLASS")]');
вместо:
$dom->find('li[class=SPECIALCLASS]');
Других решений пока нет …