Вложенные границы

Тема в разделе "Границы парсинга", создана пользователем Zorro, 4 фев 2013.

  1. Zorro

    Zorro New Member Пользователи

    Регистрация:
    22 дек 2012
    Сообщения:
    17
    Здравствуйте.
    Попадается такая вот рекурсивная конструкция


    HTML:
    Может быть так:
    <div class="postbody">
    	<div class="quotecontent">
    		Нужно удалить этот текст 1</div>
    Нужно взять этот текст
    </div>
    
    
    Или так:
    <div class="postbody">
    	<div class="quotecontent">
    		<div class="quotecontent">
    			Нужно удалить этот текст 1</div>
    				Нужно удалить этот текст 2</div>
    Нужно взять этот текст
    </div>
    
    Или так:
    <div class="postbody">
    	<div class="quotecontent">
    		<div class="quotecontent">
    			<div class="quotecontent">
    				Нужно удалить этот текст 1</div>
    					Нужно удалить этот текст 2</div>
    						Нужно удалить этот текст 3</div>				
    Нужно взять этот текст
    </div>
    
    ....
    
    в основном контент идет так конечно
    <div class="postbody">
    Нужно взять этот текст
    </div>
    
    Как добыть Нужный текст?
     
    Последнее редактирование: 5 фев 2013
  2. Zorro

    Zorro New Member Пользователи

    Регистрация:
    22 дек 2012
    Сообщения:
    17
    Задаю границы
    <div class="postbody"> ... </div>

    предварительно поиск-замена
    <div class="quotecontent">{skip}</div>|
    не убирает всё лишнее, если несколько уровней

    если пишу что-то типа
    <div class="quotecontent"><div class="quotecontent">{skip}</div>{skip}</div>|
    и т.д.
    в случае одноуровневой вложенности - поедает лишнее...

    Хелп ми плиз!
     
    Последнее редактирование: 5 фев 2013
  3. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Вот если было бы понятно, что идет после последнего DIV или знали бы откуда парсите (чтобы знать код страницы). То, возможно, вам бы и помогли... А так, извините, гадать не научены.
     
  4. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Как вариант спарсить все (вместе с блоками div class="quotecontent")
    И потом, БЕЗ ПРЕДВАРИТЕЛЬНОЙ ПОИСК-ЗАМЕНЫ, макросом поиск-замены {get} взять текст от конца до последнего </div>.
    Документация по функциям поиск-замены: Ссылки недоступны для гостей

    Поиск-замену (набросал навскидку) организуйте следующим образом:
    PHP:
    </div>{get}|{get}
     
  5. Zorro

    Zorro New Member Пользователи

    Регистрация:
    22 дек 2012
    Сообщения:
    17
    что-то у меня так не получается
    пример страниц

    _http://www.triplag.com/4room/viewtopic.php?f=3&t=6621&start=15 - в первом посте цитата 1 уровень - цитат несколько
    _http://www.triplag.com/4room/viewtopic.php?f=3&t=6621&start=30 - в первом посте вложенная цитата

    после поста м.б. <span class="postbody"> или <br clear="all" /> - неоднозначно так

    нужно выпарсить посты без цитат

    П.С. назрел вопрос - можно ли задать такое условие на конец границы - <span class="postbody">|<br clear="all" /> - что встретиться раньше
     
    Последнее редактирование: 6 фев 2013
  6. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Все решается поиск-заменой, ссылку на описание функции поиск-замены я вам давал выше.
    Поиск-замену я производил к каждому посту макросом шаблона вывода BEFORE_IMG_REPLACE, который вставил в "настройка повторяющихся границ" на панели инструментов ({break} Там в качестве разделителя операций поиск-замен).
    К посту прикрепил файл проекта с настройками. Сначала сохраните свой проект (меню - файл - сохранить проект), потом загрузите мой (меню - файл - загрузить проект).
     

    Вложения:

    • triplag_com.cdp
      Размер файла:
      26,4 КБ
      Просмотров:
      3
  7. Zorro

    Zorro New Member Пользователи

    Регистрация:
    22 дек 2012
    Сообщения:
    17
    Что то не то...
    В вашем примере на странице _http://www.triplag.com/4room/viewtopic.php?f=3&t=6621&start=15
    первый пост, сглатываются строки

    Yes, it is. I will be changing the navigation a little bit later. It is just a temporary set until the new nav is finished.
    и
    Vic said to drop the top banner, when we were working on the theme. If he says to bring it back, it's not a problem.

    И скажите пожалуйста, в исходя из чего вы сделали именно столько
    {skip}</div>| - вы их как-то высчитывали, или просто взяли с запасом?

    [BEFORE_IMG_REPLACE(</div>{skip}|{break}{skip}</div>|{break}{skip}</div>|{break}{skip}</div>|{break}{skip}</div>|{break}{skip}</div>|{break}{skip}</div>|{break}{skip}</div>|)][VALUE][/BEFORE_IMG_REPLACE]

    я так понимаю эта задача не решаема?
    и так крутил и так...
     
  8. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Опять же та же поиск-замена выручает. Проект прикрепил...
     

    Вложения:

  9. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Хотя на второй странице вложенная в цитату цитата теперь не удаляется ;)
     
  10. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Других идей по вашей проблеме у меня пока нет...
     
  11. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Есть идея сделать новую функцию в программе под вашу задачу. Если оно того стоит, напишите пожалуйста в ICQ 571-880-051, обговорим условия. Спасибо!
     
  12. Zorro

    Zorro New Member Пользователи

    Регистрация:
    22 дек 2012
    Сообщения:
    17
    Думаю, ради одной задачи, одного человека не стоит это включать в программу. Если только сообщество выскажется о необходимости...
    Хотя показанный мной пример далеко не частный случай - такая вложенность встречалась не раз (я не долго знаком с CD и пользуюсь не часто).
    Не знаю, стоит ли усложнять фунционал, я, например и так плохо ориентируюсь в CD. Как решать - в общем понятно, - надо не резать выделенный блок регулярками, а раскручивать слой за слоем (как капусту, только изнутри :D).
    Если сделаете, приму участие в тестировании, от контактов не отказываюсь :). Вы же знаете насущные потребности пользователей по форуму в функционале лучше. я написал "дело обычное" - но пока встретил на одном форумном движке, сегодня-завтра пересмотрю "цитатность" на том, что что отпарсено раньше - отпишусь.


    Я для себя решил это для моей ситуации более-менее приемлемо.
    Получается (вроде) так, что я в любой ситуации беру только как минимум, последнюю, или больше цитату, и заменой заключаю её в <blockquote></blockquote>
    что вполне красиво и обоснованно ложится в WP
    Весь "Нужный текст" поста влетает.
    В конце концов, отпарсенное <blockquote> можно позже дочистить.
    Делаю поиском-заменой основного кода так:
    PHP:
    <div class="quotetitle{skip}</div>|
    <div class="
    codetitle{skip}</div>|
    <
    div class="codecontent{skip}</div>|
    <span class="
    postbody{skip}</span>|
    <
    div class="quotecontent"><div class="quotecontent"><div class="quotecontent">{skip}</div>{skip}</div>{skip}</div>|<blockquote>{skip}</blockquote>
    <
    div class="quotecontent"><div class="quotecontent">{skip}</div>{skip}</div>|<blockquote>{skip}</blockquote>
    <
    div class="quotecontent">{skip}</div>|<blockquote>{skip}</blockquote>
    дисклеймер :), может и заблуждаюсь, но вроде как работает нормально
    Делал из расчета, что не будет больше трехуровневой вложенности, можно и расширить
    в настройках повт.границ - у меня только [VALUE]
    или туда можно загнать [BEFORE_IMG_REPLACE(<blockquote>{skip}</blockquote>|)][VALUE][/BEFORE_IMG_REPLACE]
     
    Последнее редактирование: 6 фев 2013

Поделиться этой страницей