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

Делаю парсинг одного сайта, смотрю много закрывающих тегов </div> из за чего моя верстка тоже слетает.
Пробовал так
$content = preg_replace("/<\/?div[^>]*\>/i", "", $content);
не получается... Может кто сталкивался?
  • Вопрос задан
  • 483 просмотра
Пригласить эксперта
Ответы на вопрос 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, можно получать контент отдельных элементов
Ответ написан
Ваш ответ на вопрос

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

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