Метод eq класса Crawler
Метод eq класса Crawler позволяет выбрать
один элемент из текущей выборки по его порядковому номеру.
Метод принимает первым параметром целое число position -
индекс элемента, начиная с нуля. Возвращается новый объект
Crawler, содержащий только выбранный элемент. Если
элемента с таким индексом нет, возвращается пустой Crawler.
Синтаксис
$crawler->eq(position)
Пример
Давайте получим HTML-страницу, найдём все теги p
и выберем второй из них по индексу 1:
<?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 = '<p>article 1</p><p>article 2</p><p>article 3</p>';
$crawler = new Crawler($html);
$res = $crawler->filter('p')->eq(1)->text();
return new Response($res);
}
}
?>
Результат выполнения кода:
"article 2"
Пример
Давайте выберем элемент по индексу 0, то есть первый
в выборке:
<?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="row">abcde</div><div class="row">hello</div>';
$crawler = new Crawler($html);
$res = $crawler->filter('div.row')->eq(0)->text();
return new Response($res);
}
}
?>
Результат выполнения кода:
"abcde"
Пример
Давайте попробуем выбрать элемент по индексу, которого нет в выборке, и получим пустой результат:
<?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 = '<p>article</p><p>user</p>';
$crawler = new Crawler($html);
$res = $crawler->filter('p')->eq(5)->count();
return new Response((string) $res);
}
}
?>
Результат выполнения кода:
"0"