РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1157 of 1361 menu

Метод ancestors

Метод ancestors класса Crawler возвращает новый объект Crawler, содержащий всех предков текущего узла - то есть родителя, родителя родителя и так далее до корня документа. Метод не принимает параметров. Исходный объект Crawler при этом не изменяется.

Синтаксис

$crawler->ancestors()

Пример

Давайте получим всех предков узла span из HTML-документа:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\DomCrawler\Crawler; class ArticleController extends AbstractController { public function index(): Response { $html = ' <div class="wrap"> <section class="content"> <p class="text"><span>abcde</span></p> </section> </div> '; $crawler = new Crawler($html); $ancestors = $crawler->filter('span')->ancestors(); foreach ($ancestors as $node) { echo $node->nodeName . ' '; } return new Response(); } } ?>

Результат выполнения кода:

"p section div"

Пример

Давайте выведем классы всех предков узла:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\DomCrawler\Crawler; class ArticleController extends AbstractController { public function index(): Response { $html = ' <div class="wrap"> <section class="content"> <p class="text"><span>abcde</span></p> </section> </div> '; $crawler = new Crawler($html); $ancestors = $crawler->filter('span')->ancestors(); foreach ($ancestors as $node) { echo $node->getAttribute('class') . ' '; } return new Response(); } } ?>

Результат выполнения кода:

"text content wrap"

Пример

Давайте посчитаем количество предков у узла:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\DomCrawler\Crawler; class ArticleController extends AbstractController { public function index(): Response { $html = ' <div class="wrap"> <section class="content"> <p class="text"><span>abcde</span></p> </section> </div> '; $crawler = new Crawler($html); $count = $crawler->filter('span')->ancestors()->count(); echo $count; return new Response(); } } ?>

Результат выполнения кода:

3

Смотрите также

  • метод children,
    который возвращает дочерние элементы узла
  • метод siblings,
    который возвращает соседние элементы узла
  • метод closest,
    который возвращает ближайшего предка по селектору
  • метод filter,
    который фильтрует узлы по CSS-селектору
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить