Как в PHP вырезать всё лишнее из тега?

Помогите с регуляркой, как вырезать всё содержимое из div и оствавить только тег style
Пример:
<div onclick="alert('Hello')" style="color:#ff0000;">текст</div>
<div onclick="alert('Hello')">текст</div>
<div style="color:#ff0000;" onclick="alert('Hello')">текст</div>
<div style="color:#ff0000;">текст</div>

Нужно получить
<div style="color:#ff0000;">текст</div>
<div>текст</div>
<div style="color:#ff0000;" >текст</div>
<div style="color:#ff0000;"></div>


Застрял на этом этапе.
  • Вопрос задан
  • 573 просмотра
Решения вопроса 1
pOmelchenko
@pOmelchenko
php-developer
Не вырезал, а пересобрал =)

<?php

$HTMLCode = <<< HTML
<div onclick="alert('Hello')" style="color:#ff0000;">текст1</div>
<div onclick="alert('Hello')">текст2</div>
<div style="color:#ff0000;" onclick="alert('Hello')">текст3</div>
<div style="color:#ff0000;">текст4</div>
HTML;

$HTMLCode = mb_convert_encoding($HTMLCode, 'HTML-ENTITIES', "UTF-8");

$dom = new DomDocument();
$dom->loadHTML( $HTMLCode );
$xpath = new DomXPath( $dom );

$_res = $xpath->query(".//div");

foreach($_res as $div){
	$style = $div->getAttribute('style') ? ' style="'.$div->getAttribute('style').'"' : '';
    echo '<div'.$style.'>'.$div->textContent.'</div>';
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
Предлагаю посмотреть в сторону библиотеки HTML Purifier. Для этих целей он.
htmlpurifier.org
Ответ написан
muhammad_97
@muhammad_97
PHP-разработчик
Лучше все таки не регуляркой, а парсером.
Ответ написан
yurygolikov
@yurygolikov
+ парсер лучше
Ответ написан
@vshvydky
Для пхп неплохой парсер статического контента simple_html_dom
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы