Метод matches
Метод matches класса Crawler проверяет,
соответствует ли узел, на который указывает
текущий объект Crawler, заданному
CSS-селектору. Метод принимает первым параметром
строку с селектором и возвращает true,
если узел соответствует селектору, и false
в противном случае. Метод удобен, когда нужно
проверить конкретный элемент DOM-дерева без
выборки новых узлов.
Следует помнить, что метод matches работает
с первым узлом в коллекции Crawler. Если
коллекция пуста, метод вернёт false.
Синтаксис
$crawler->matches(string $selector): bool
Пример
Давайте создадим объект Crawler из HTML-строки
и проверим, соответствует ли корневой узел селектору '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="article">hello</div>';
$crawler = new Crawler($html);
$res = $crawler->matches('div');
return new Response(var_export($res, true));
}
}
?>
Результат выполнения кода:
true
Пример
Давайте проверим узел, полученный через метод filter,
на соответствие селектору с классом:
<?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="article">hello</div>';
$crawler = new Crawler($html);
$node = $crawler->filter('.article');
$res = $node->matches('.article');
return new Response(var_export($res, true));
}
}
?>
Результат выполнения кода:
true
Пример
Давайте проверим узел на несоответствие селектору:
<?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="article">hello</div>';
$crawler = new Crawler($html);
$node = $crawler->filter('.article');
$res = $node->matches('.user');
return new Response(var_export($res, true));
}
}
?>
Результат выполнения кода:
false
Смотрите также
-
класс
Crawler,
который представляет DOM-дерево документа -
метод
filter,
который выбирает узлы по CSS-селектору -
метод
filterXPath,
который выбирает узлы по XPath-выражению -
метод
closest,
который ищет ближайшего предка по селектору