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

Тема в разделе "Как сделать...", создана пользователем smertnik, 3 июн 2010.

Статус темы:
Закрыта.
  1. smertnik

    smertnik Постоялец

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

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

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102
    Задача не определена полностью, пока ты не скажешь чем ограничивается последний элемент. либо отказывайся от тэгов в значениях, либо укажи какой тэг или символ замыкает последнее значение в тексте.

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

    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];
     
    smertnik нравится это.
  3. smertnik

    smertnik Постоялец

    Регистр.:
    5 июн 2006
    Сообщения:
    68
    Симпатии:
    30
    Все это находиться в диве, т.е в переменной уже содержаться готовые данные для разбора (приведенные выше), конечный пункт может закончиться как угодно (просто текст, текст в теге p и.т.д).
    Код:
    <strong n..>ключ</strong n...>
    Просто текст <p>Текст</p>
    
    Подобное уже делал, получилось нечто preg_match_all("/(<strong>[^<]+<\/strong>)(.*?)/ism", $str, $match);

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