14.03.2018 19:48:00
Данная заметка посвящена теме, как из тегов в тексте, например полученный парсером, убрать лишние параметры.
Представим ситуацию, что мы получил текст с тегами и лишними параметрами и храним его в переменной. Допустим в переменной $
text у нас хранится ниже представленный фрагмент html текста.
<div class="text"><p style="text-align: justify;"><strong><span style="font-size: small;">В городе Сергиев Посад прошел Международный конкурс музыкального и хореографического искусства «Мир Волшебного Искусства».</span></strong></p>
↵<p style="text-align: justify;"><span style="font-size: small;">В нем приняли участие <strong>хореографический коллектив «Dance-mix» </strong>(руководитель Татьяна Гаранина) и руководитель <strong>вокального ансамбля «Улыбка»</strong> Дома культуры села Федино Ирина Шолина.</span><o:p></o:p></p>
↵<p style="text-align: justify;"><span style="font-size: small;">По решению высокопрофессионального жюри <strong>Ирина Шолина</strong> стала обладателем Гран-При в номинации «Вокальное искусство».</span><o:p></o:p></p>
↵<p style="text-align: justify;"><span style="font-size: small;">Хореографический коллектив «Dance-mix» в номинации «Эстрадный танец» в возрастной категории 8-10 лет стал лауреатом II степени. Руководитель коллектива <strong>Татьяна Гаранина</strong> награждена Почетным дипломом за большой личный вклад в развитие культуры, сохранение духовности, яркую творческую индивидуальность, высокий профессионализм.</span><span style="font-size:12.0pt;font-family:"Arial","sans-serif""><o:p></o:p></span></p></div>
В тексте много нежных параметров, цвет текста, размеры и т.д. Если мы его вставим на сайт, то оформление может поехать или станет некрасивым.
Мы можем используя регулярные выражения убрать лишние параметры.
Регулярное выражение ниже, убирает любые параметры, кроме заданных в скобках:
\w+(?<!align|title|alt|height|width|src)=".+?"
Что означает
<!align|title|alt|height|width|src), что здесь мы можем перечислить через "|" какие параметры не убирать, сейчас это align, title, alt, height, width, src.
Пример использования данного регулярного выражения, чтобы не убирались параметры
"href" и
"target".
$new_text= preg_replace('/\w+(?<!href|target)=".+?"/s', '', $text);
Данным кодом мы в новую переменную $new_text запишем значение $text, из которой убрали почти все параметры. И наш код теперь выглядит так
<div ><p ><strong><span >В городе Сергиев Посад прошел Международный конкурс музыкального и хореографического искусства «Мир Волшебного Искусства».</span></strong></p>
↵<p ><span >В нем приняли участие <strong>хореографический коллектив «Dance-mix» </strong>(руководитель Татьяна Гаранина) и руководитель <strong>вокального ансамбля «Улыбка»</strong> Дома культуры села Федино Ирина Шолина.</span><o:p></o:p></p>
↵<p ><span >По решению высокопрофессионального жюри <strong>Ирина Шолина</strong> стала обладателем Гран-При в номинации «Вокальное искусство».</span><o:p></o:p></p>
↵<p ><span >Хореографический коллектив «Dance-mix» в номинации «Эстрадный танец» в возрастной категории 8-10 лет стал лауреатом II степени. Руководитель коллектива <strong>Татьяна Гаранина</strong> награждена Почетным дипломом за большой личный вклад в развитие культуры, сохранение духовности, яркую творческую индивидуальность, высокий профессионализм.</span><span ><o:p></o:p></span></p></div>
Как видите в нашем html коде уже нет параметров отвечающих за оформление, таких как стиль, размер текста и т.д.