Я использую HTML-парсер библиотеки DiDom. Из документацииhttps://github.com/Imangazaliev/DiDOM#verify-if-element-exists):
Если вам нужно проверить, существует ли элемент, а затем получить его:
if ($document->has('.post')) {
$elements = $document->find('.post');
// code
}
Но что, если мне нужно проверить существование n-го элемента массива элементов с помощью класса .post, например:
$elements = $document->find('.post')[1];
Код ниже не работает и выдает ошибки:
if ($document->has('.post')[1]) {
$elements = $document->find('.post')[1];
// code
}
Я нашел решение. DiDOM есть () Метод не предлагает опцию nth-child. Поэтому я использовал селектор псевдоклассов nth-child (n), чтобы проверить внешний вид n-го элемента.
Код выглядит сейчас:
if ($document->find('.post:nth-child(2)')) {
$elements = $document->find('.post:nth-child(2)'))[0]->text();
} else {
echo "there are no such item";
}
Других решений пока нет …