PHP SDK: Node: отдельная карточка или элемент
$card является результатом $dom->q(...) или элементом списка $dom->qa(...). Сначала убедитесь, что поиск вернул объект, а не null. Node нельзя создать через new внутри алгоритма.
Методы
text
text(bool $trim = true): string
Получить текст найденного элемента. Повторяющиеся пробелы и переводы строк объединяются.
$name = $card->text();
Результат и особенности. Возвращает строку. При trim=false внешние пробелы сохраняются, но пробелы внутри всё равно нормализуются.
html
html(): string
Получить HTML элемента целиком, включая его собственный тег.
$fragment = $card->html();
Результат и особенности. Возвращает строку. Это разметка найденного фрагмента, не исходный документ байт в байт.
attr
attr(string $name): ?string
Получить значение одного атрибута.
$sku = $card->attr('data-sku');
Результат и особенности. Возвращает очищенную по краям строку или null для отсутствующего/пустого атрибута.
abs
abs(string $attribute = 'href'): ?string
Получить полный URL из атрибута. По умолчанию используется href.
$imageUrl = $card->q('img')?->abs('src');
Результат и особенности. Возвращает строку или null. Базовый URL задаётся при создании Dom; без него относительная ссылка останется относительной.
q
q(string $css): ?Node
Найти первый подходящий элемент внутри текущего фрагмента.
$price = $card->q('.price')?->text();
Результат и особенности. Возвращает Node или null. Поиск ограничен текущей карточкой, поэтому данные соседнего товара не смешиваются.
qa
qa(string $css): array
Получить все совпадения внутри текущего фрагмента.
$images = [];
foreach ($card->qa('img') as $image) { $images[] = $image->abs('src'); }
Результат и особенности. Возвращает список Node. При отсутствии совпадений список пустой.
exists
exists(): bool
Проверить существование уже полученного объекта Node.
$node = $dom->q('h1');
$found = $node !== null && $node->exists();
Результат и особенности. У существующего Node всегда возвращает true. Для проверки результата поиска достаточно $node !== null. На null этот метод вызвать нельзя.