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

Метод count класса Crawler

Метод count класса Crawler возвращает количество DOM-элементов, хранящихся в объекте Crawler. Метод не принимает параметров и возвращает целое число. Его удобно использовать для проверки наличия элементов на странице и для перебора коллекции в цикле.

Класс Crawler реализует интерфейс Countable, поэтому к нему также можно применять функцию count языка PHP.

Синтаксис

public function count(): int

Пример

Давайте создадим объект Crawler из HTML-строки и посчитаем количество найденных элементов:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\DomCrawler\Crawler; use Symfony\Component\HttpFoundation\Response; class ArticleController extends AbstractController { public function index(): Response { $html = '<ul><li>article 1</li><li>article 2</li><li>article 3</li></ul>'; $crawler = new Crawler($html); $res = $crawler->filter('li')->count(); return new Response($res); } } ?>

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

3

Пример

Давайте проверим, есть ли на странице элемент с классом item, с помощью сравнения результата метода count с нулём:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\DomCrawler\Crawler; use Symfony\Component\HttpFoundation\Response; class ArticleController extends AbstractController { public function index(): Response { $html = '<div class="item">abcde</div><div class="item">hello</div>'; $crawler = new Crawler($html); $items = $crawler->filter('.item'); if ($items->count() > 0) { $res = 'items found: ' . $items->count(); } else { $res = 'no items'; } return new Response($res); } } ?>

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

"items found: 2"

Пример

Давайте переберём все найденные элементы, используя результат метода count в цикле:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\DomCrawler\Crawler; use Symfony\Component\HttpFoundation\Response; class ArticleController extends AbstractController { public function index(): Response { $html = '<ul><li>article 1</li><li>article 2</li><li>article 3</li></ul>'; $crawler = new Crawler($html); $items = $crawler->filter('li'); $res = []; for ($i = 0; $i < $items->count(); $i++) { $res[] = $items->eq($i)->text(); } return new Response(implode(', ', $res)); } } ?>

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

"article 1, article 2, article 3"

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

  • класс Crawler,
    который представляет DOM-узлы страницы
  • метод filter,
    который выбирает элементы по CSS-селектору
  • метод eq,
    который возвращает элемент по индексу
  • метод text,
    который возвращает текст элемента
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить