Форум 1С-Битрикс

Задавайте свои вопросы и отвечайте на вопросы других участников форума


Как удалить ненужные и пустые html теги из текста с помощью регулярных выражений на php

При экспорте товаров из интернет магазина на битрикс в файл (фид) yml, выгружается описание товара (PREVIEW_TEXT) с кучей ненужных html тегов. Описание для анонса редактировать у большого количества товаров нет времени и возможности.
Как с помощью php
- удалить пустые теги

из html
- удалить подряд идущие теги
- почистить и удалить все ненужные теги из текста

Ответ 1

Для удаления html и php тегов из текста можно использовать стандартную пхп функцию strip_tags( string str [, string allowable_tags] ). Чтобы оставить теги, которые нужны (которые не должны удаляться) укажите их во втором параметре.
Код

strip_tags($html, '



');
Для удаления подряд идущих повторяющихся тегов
используйте регулярное выражение. В итоге останется только одна br
Код
preg_replace('{(|\/>)\s*){2,}}i','$1',$html);
Для удаления

тегов с пустым содержимым используйте регулярку
Код

preg_replace("/]*>(\s{0,}(<[a-z]*[^>]*>){0,}\s{0,}){0,}<\\/p>/",'',$html);
Для удаления атрибутов стиля (style) из тегов необходимо использовать регулярное выражение
Код
preg_replace('/(<[^>]+) style=".*?"/i', '$1', $html); 
Для удаления атрибута класс (class) из тегов необходимо использовать регулярное выражение
Код
preg_replace('/(<[^>]+) class=".*?"/i', '$1', $html); 
ЗЫ Не забудьте удалить символ неразрывного пробела  
preg_replace("/ /",'',$html);

Возврат к списку