К содержимому

Документация

PHP SDK: Node: отдельная карточка или элемент

$card является результатом $dom->q(...) или элементом списка $dom->qa(...). Сначала убедитесь, что поиск вернул объект, а не null. Node нельзя создать через new внутри алгоритма.

Общий справочник SDK

Методы

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 этот метод вызвать нельзя.