Задать вопрос

Есть ли способ удаления лишних закрывающих тегов при парсинге?

Делаю парсинг одного сайта, смотрю много закрывающих тегов </div> из за чего моя верстка тоже слетает.
Пробовал так
$content = preg_replace("/<\/?div[^>]*\>/i", "", $content);
не получается... Может кто сталкивался?
  • Вопрос задан
  • 483 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
@novrm
Вам нужно фильтр html-разметки.
При правильной настройке htmlpurifier - подойдет.
Ответ написан
Комментировать
Inlore
@Inlore
А можно парсить через DOMDocument и получать содержимое body без тегов
$url = 'http://yandex.ru';
$result = file_get_contents($url);

$dom = new \DOMDocument();
libxml_use_internal_errors(true);
/* По-умолчанию loadHTML использует iso-8859-1, поэтому явно указываем преобразование */
$dom->loadHTML(mb_convert_encoding($result, 'HTML-ENTITIES', 'UTF-8'));
libxml_use_internal_errors(false);
$bodyContent = $dom->getElementsByTagName('body')[0]->textContent;


В тексте останутся ненужные части, типа скриптов и стилей, но можно перед созданием DOMDocument регуляркой убрать их из html.

Если не нужен целиком body, можно получать контент отдельных элементов
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы