Подскажите регулярное выражение

D
На сайте с 20.09.2010
Offline
156
223

Есть хтмл текст:

<p>text1</p>
<img src="1.jpg" title="Описание фотки 1">
<p>text2</p>
<img src="2.jpg" title="Описание фотки 2">
<p>text3</p>
<img src="3.jpg" title="Описание фотки 3">
<p>text4</p>
<img src="4.jpg">
<p>text5</p>

Необходимо из каждой фотки вырезать текст, который у нее в Title (если он есть, если описания нет, тогда ничего не делаем с фото)u обернуть само фото в теги так:

<figure class="promo__img">
<img src="1.jpg" title="Описание фотки 1">
<figcaption>Описание фотки 1</figcaption>
</figure>

тоесть исходный текст должен получиться таким:

<p>text1</p>
<figure class="promo__img">
<img src="1.jpg" title="Описание фотки 1">
<figcaption>Описание фотки 1</figcaption>
</figure>
<p>text2</p>
<figure class="promo__img">
<img src="2.jpg" title="Описание фотки 2">
<figcaption>Описание фотки 2</figcaption>
</figure>
<p>text3</p>
<figure class="promo__img">
<img src="3.jpg" title="Описание фотки 3">
<figcaption>Описание фотки 3</figcaption>
</figure>
<p>text4</p>
<img src="4.jpg">
<p>text5</p>

Подскажите пожалуйста для такого секса регулярку или хотя бы алгоритм..

W
На сайте с 08.02.2017
Offline
161
#1

тут лучше фреймворк для парсинга хтмл использовать. например питоновский beautifulsoup

Комплексный аудит ИМ. Формирование УТП, анализ юзабилити, каналов продвижения. Контекстная реклама, настройка систем аналитики. Консультация - бесплатно, в ЛС
edogs software
На сайте с 15.12.2005
Offline
738
#2

$html=preg_replace('~(<p>[^<]*</p>)[^<]*(<img src="[^"]*" title="([^"]+)">)[^<]*(<p>[^<]*</p>)~siu','$1 <figure class="promo__img"> $2 <figcaption>$3</figcaption> </figure> $4',$html);
Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход.
FoxCloud
На сайте с 08.11.2016
Offline
62
#3

Посмотрите здесь: https://simplehtmldom.sourceforge.io

FoxCloud (http://ru.foxcloud.net/)размещение в Европе / Америке / России. Услуги для любого проекта.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий