Как написать регулярное выражение php, которое убирает

если найдет в нем атрибут style="display:none;"

Имею переменную

$text = "
<p style="display:none;">Текст первый</p>
<p>Текст2</p>
<p style="display:none;">Текст второй)))</p>
<p>Текст4</p>";

хотелось бы убрать все блоки где присутствует style="display:none;" и остались только те , где не было этого атрибута Чтоб получилось вот так:

$text = "
<p>Текст2</p>
<p>Текст4</p>";

Подскажите как это сделать, пожалуйста


Ответы (1 шт):

Автор решения: PotroNik

Регулярное выражение: ^(?!.*style="display:none;")<p.*<\/p>$ где используется негативный просмотр впере (?!.*style="display:none;")


$re = '/^(?!.*style="display:none;")<p.*<\/p>$/m';
$str = '<p style="display:none;">Текст первый</p>
<p>Текст2</p>
<p style="display:none;">Текст второй)))</p>
<p>Текст4</p>';

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);

// Print the entire match result
var_dump($matches);

Сгенерировано автоматически по ссылке: https://regex101.com/r/u5Uzwr/1/

→ Ссылка