Метод images
Метод images класса Crawler
извлекает все изображения из текущего
фрагмента HTML-документа. Метод не принимает
параметров и возвращает массив, каждый элемент
которого является объектом Crawler,
обёрнутым вокруг тега img.
По умолчанию метод ищет только теги
img без учёта регистра. Результат
удобно перебирать в цикле и извлекать
атрибуты src, alt, title
через метод attr.
Синтаксис
$images = $crawler->images();
Пример
Давайте создадим объект Crawler с
HTML-кодом, содержащим несколько изображений,
и получим их через метод images:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentDomCrawlerCrawler;
use SymfonyComponentHttpFoundationResponse;
class ArticleController extends AbstractController
{
public function index(): Response
{
$html = '<div>
<img src="/img/a.png" alt="first">
<img src="/img/b.png" alt="second">
<img src="/img/c.png" alt="third">
</div>';
$crawler = new Crawler($html);
$images = $crawler->images();
$res = count($images);
return new Response((string) $res);
}
}
?>
Результат выполнения кода:
3
Пример
Давайте переберём все изображения и выведем
значения их атрибутов src:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentDomCrawlerCrawler;
use SymfonyComponentHttpFoundationResponse;
class ArticleController extends AbstractController
{
public function index(): Response
{
$html = '<div>
<img src="/img/a.png" alt="first">
<img src="/img/b.png" alt="second">
</div>';
$crawler = new Crawler($html);
$images = $crawler->images();
$res = [];
foreach ($images as $image) {
$res[] = $image->attr('src');
}
return new Response(implode(', ', $res));
}
}
?>
Результат выполнения кода:
"/img/a.png, /img/b.png"
Пример
Давайте получим только первое изображение
через индекс [0] и выведем его атрибут
alt:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentDomCrawlerCrawler;
use SymfonyComponentHttpFoundationResponse;
class ArticleController extends AbstractController
{
public function index(): Response
{
$html = '<img src="/img/a.png" alt="abcde">';
$crawler = new Crawler($html);
$images = $crawler->images();
$alt = $images[0]->attr('alt');
return new Response($alt);
}
}
?>
Результат выполнения кода:
"abcde"