Symfony 2: парсинг UTF-8 данных с DomCrawler

На днях необходимо было распарсить ресурс в рамках проекта на Symfony 2. Для этого я решил воспользоваться Сrawler’ом — компонентом Symfony, который позволяет работать с DOM элементами, используя при этом XPath и CSS фильтры. Но возникла проблема с кодировкой.

Некоторые символы выглядели явно не так, как должны были, несмотря на то, что везде где можно использовалась кодировка UTF-8. Дело в том, что Crawler использует кодировку ISO-8859-1 в том случае, если он не смог ее определить по мета-тегу


<meta charset="utf-8">

Исправить проблему можно воспользовавшись методом addHtmlContent(), который вторым параметром принимает кодировку (по умолчанию — UTF-8).

Поэтому вместо


use Symfony\Component\DomCrawler\Crawler;
...
$crawler = new Crawler($html);

нужно использовать


use Symfony\Component\DomCrawler\Crawler;
...
$crawler = new Crawler();
$crawler->addHtmlContent($html);

Stas Kuryan

Web developer. Перфекционист в написании кода.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *