Метод attr класса Crawler
Метод attr класса Crawler возвращает значение
указанного атрибута первого элемента в текущей выборке.
Первым параметром передаётся имя атрибута. Если атрибут
отсутствует, метод возвращает null.
Синтаксис
public function attr(string $attribute): ?string
Пример
Давайте получим значение атрибута href у ссылки:
<?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 = '<a href="/user">link</a>';
$crawler = new Crawler($html);
return new Response($crawler->attr('href'));
}
}
?>
Результат выполнения кода:
"/user"
Пример
Давайте получим значение атрибута class у блока:
<?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">text</div>';
$crawler = new Crawler($html);
return new Response($crawler->attr('class'));
}
}
?>
Результат выполнения кода:
"article"
Пример
Если атрибут отсутствует, метод вернёт null.
Давайте проверим это:
<?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>text</div>';
$crawler = new Crawler($html);
var_dump($crawler->attr('id'));
return new Response();
}
}
?>
Результат выполнения кода:
NULL
Пример
Метод работает с первым элементом выборки. Давайте получим атрибут у первого элемента списка:
<?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 = '<ul>
<li data-id="1">a</li>
<li data-id="2">b</li>
</ul>';
$crawler = new Crawler($html);
$items = $crawler->filter('li');
return new Response($items->attr('data-id'));
}
}
?>
Результат выполнения кода:
"1"