Повторяющиеся границы - не парсить текст менее N символов

Тема в разделе "Решение различных задач по парсингу", создана пользователем cdcustomer, 21 сен 2012.

  1. cdcustomer

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

    Регистрация:
    17 мар 2012
    Сообщения:
    41
    Приветствую.

    Вопрос возник.
    Как можно задать условие при парсинге повторяющихся границ.. а именно не парсить границу, если в ней содержится менее N символов текста... т.е. проверили границу - в ней меньше N символов - пропустили границу и не спарсили - перешли к следующей границе...
     
  2. nikolas1612

    nikolas1612 Member Пользователи

    Регистрация:
    27 ноя 2011
    Сообщения:
    439
    вот решение для обычных границ:
    шаблон вывода:
    [IFNIL]<CD_GRAN_1!>[ELSE]<CD_GRAN_2!>[ELSE]<CD_GRAN_3!>[/IFNIL]
    поле поиска - замены в каждой из границ:
    {get}|<!!>{get}<!!>
    re:<!!>.{0,60}<!!>|
    <!!>|

    в итоговый документ попадет первая из границ, в которой будет более 60 символов. для повторяющихся - домысливайте сами, я их крайне редко использую, поэтому неохота разбираться. по идее, эта схема (с некоторыми вариациями) может сработать и там.

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

    P.P.S. блин, интересная все-таки задача. аж зацепило. я вот подумал - а на фига макрос IFNIL? если задача не стояла - выводить первую непустую границу - то в принципе все решабельно. введите в шаблон каждой из повторяющихся границ структуру такого вида:
    [REPLACE(
    {get}|<!!>{get}<!!>
    re:<!!>.{0,60}<!!>|
    <!!>|
    )][VALUE][/REPLACE]

    - и посмотрите, что получится. вполне вероятно, что заработает.
    *60 - это минимальное количество символов, при меньшем количестве повторяющаяся граница "убивается". задайте то число, какое вам необходимо.
    ну и о результатах напишите, мне интересно.
     
    Последнее редактирование: 22 сен 2012
  3. cdcustomer

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

    Регистрация:
    17 мар 2012
    Сообщения:
    41
    круто! Все работает :) спасибо!

    п.с. похоже я все таки не полностью знаком со всем возможным функционалом программы... надо будет поизучать..
     

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