Разбор определенной структуры

Статус
В этой теме нельзя размещать новые ответы.

smertnik

Постоялец
Регистрация
5 Июн 2006
Сообщения
68
Реакции
30
Есть страница html, из нее нужно вырезать кусок и закинуть в массив ключ => значение.

Структура разбираемого блока:
Код:
<strong>ключ</strong>
значение
<strong>ключ</strong>
значение
.......
<n..>ключ</n..>
значение
Структура не фиксированная, и основная проблема как после 1 strong взять все что есть до следующего и.т.д
Значение может находиться в тегах, из которых большинство желательно оставить.
 
Есть страница html, из нее нужно вырезать кусок и закинуть в массив ключ => значение.
Структура разбираемого блока:
Код:
<strong>ключ</strong>
значение
<strong>ключ</strong>
значение
.......
<n..>ключ</n..>
значение
Структура не фиксированная, и основная проблема как после 1 strong взять все что есть до следующего и.т.д
Значение может находиться в тегах, из которых большинство желательно оставить.

Задача не определена полностью, пока ты не скажешь чем ограничивается последний элемент. либо отказывайся от тэгов в значениях, либо укажи какой тэг или символ замыкает последнее значение в тексте.

Если предположить что значение занимает только одну строку, то выглядеть все будет как то так:

PHP:
if (preg_match_all ("/<strong>([^<]+)</strong>[\r\n]*([^\n]+)/i", $str, $rg)
for ($i=0; $i<count($rg[1]); $i++)
   $arr[$rg[1][$i]] = $rg[2][$i];
 
Все это находиться в диве, т.е в переменной уже содержаться готовые данные для разбора (приведенные выше), конечный пункт может закончиться как угодно (просто текст, текст в теге p и.т.д).
Код:
<strong n..>ключ</strong n...>
Просто текст <p>Текст</p>

Подобное уже делал, получилось нечто preg_match_all("/(<strong>[^<]+<\/strong>)(.*?)/ism", $str, $match);

За предложенный вариант спасибо огромное, он более надежный будет, надо только убрать из текста все переводы сторк (сделать 1) и поставить перевод строки после </strong>, буду пробовать это сделать теперь.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху