Задать вопрос

Парсинг идущих друг за другом тегов?

Понадобилось сделать объединение идущих друг ха другом тегов img в один блок, который с помощью javascript превратится в галерею. Добавить один img в блок несложно — preg_replace тут сработает. А вот как выделить в отдельный блок несколько подряд идущих тегов?


Допустим, есть такой код:
<font color="black"><font color="#0000ff">&lt;</font><font color="#800000">img</font> <font color="#ff0000">src</font><font color="#0000ff">=&quot;image1.jpg&quot;</font> <font color="#ff0000">alt</font><font color="#0000ff">=&quot;&quot;</font> <font color="#0000ff">/&gt;</font><br/>
<font color="#0000ff">&lt;</font><font color="#800000">img</font> <font color="#ff0000">src</font><font color="#0000ff">=&quot;image2.jpg&quot;</font> <font color="#ff0000">alt</font><font color="#0000ff">=&quot;&quot;</font> <font color="#0000ff">/&gt;</font><br/>
<font color="#0000ff">&lt;</font><font color="#800000">img</font> <font color="#ff0000">src</font><font color="#0000ff">=&quot;image3.jpg&quot;</font> <font color="#ff0000">alt</font><font color="#0000ff">=&quot;&quot;</font> <font color="#0000ff">/&gt;</font><br/>
<font color="#0000ff">&lt;</font><font color="#800000">p</font><font color="#0000ff">&gt;</font>eewrwerr<font color="#0000ff">&lt;/</font><font color="#800000">p</font><font color="#0000ff">&gt;</font><br/>
<font color="#0000ff">&lt;</font><font color="#800000">div</font><font color="#0000ff">&gt;</font>qweqweqwe<font color="#0000ff">&lt;/</font><font color="#800000">div</font><font color="#0000ff">&gt;</font><br/>
<font color="#0000ff">&lt;</font><font color="#800000">img</font> <font color="#ff0000">src</font><font color="#0000ff">=&quot;image4.jpg&quot;</font> <font color="#ff0000">alt</font><font color="#0000ff">=&quot;&quot;</font> <font color="#0000ff">/&gt;</font><br/>
<font color="#0000ff">&lt;</font><font color="#800000">p</font><font color="#0000ff">&gt;</font>eewrwerr<font color="#0000ff">&lt;/</font><font color="#800000">p</font><font color="#0000ff">&gt;</font><br/>
<font color="#0000ff">&lt;</font><font color="#800000">img</font> <font color="#ff0000">src</font><font color="#0000ff">=&quot;image5.jpg&quot;</font> <font color="#ff0000">alt</font><font color="#0000ff">=&quot;&quot;</font> <font color="#0000ff">/&gt;</font><br/>
<font color="#0000ff">&lt;</font><font color="#800000">img</font> <font color="#ff0000">src</font><font color="#0000ff">=&quot;image6.jpg&quot;</font> <font color="#ff0000">alt</font><font color="#0000ff">=&quot;&quot;</font> <font color="#0000ff">/&gt;</font></font><br/>
<br/>
<font color="gray">* This source code was highlighted with <a href="http://virtser.net/blog/post/source-code-highlighter.aspx"><font color="gray">Source Code Highlighter</font></a>.</font>



image4.jpg как раз в данном случае и не нужен, т.к. за ним не идёт другой тег img. А нужно получить 2 списка тегов img: с изображениями image1.jpg, image2.jpg, image3.jpg и image5.jpg, image6.jpg


Не могу придумать регулярное выражение для распарсивания такого кода. Если кто встречался с такой задачей, поделитесь, пожалуйста, алгоритмом.
  • Вопрос задан
  • 3371 просмотр
Подписаться 4 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 4
YasonBy
@YasonBy
Я не знаком с особенностями регэкспов в PHP, но вроде так:
((?:<img.*[^>]/>\s?){2,})
Проверку с Вашим примером проходит.
Ответ написан
Sannis
@Sannis
Ловите плюс за перфекционизм и заботу о пользователях :-)
Ответ написан
Комментировать
k12th
@k12th
console.log(`You're pulling my leg, right?`);
DOM-методы?
Ответ написан
Комментировать
cawabanga
@cawabanga
Вы не можете парсить [X]HTML регекспами. Потому что HTML не может быть распарсен регекспами. Регекспы — не инструмент для вменяемого парсинга HTML. [...]
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
22 дек. 2024, в 20:40
10000 руб./за проект
22 дек. 2024, в 20:34
3000 руб./за проект
22 дек. 2024, в 20:12
10000 руб./за проект