Вставка <!--pagebreak--> внутри текста через определенное количество символов

Тема в разделе "Макросы шаблона вывода", создана пользователем Mars, 27 мар 2015.

  1. Mars

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

    Регистрация:
    27 мар 2015
    Сообщения:
    4
    Собственно, задача

    Вставить в тексте через определенное количество символов, но, непосредственно, перед </p> тег разбивки страницы <!--pagebreak-->.

    Частично я решил задачу при помощи макросов <IMORE> и [REPLACE]:
    Код:
    [REPLACE(</p><!--more-->|<!--pagebreak--></p>)]<IMORE len="2000" end="</p>" //><CD_GRAN_1!></IMORE>[/REPLACE]
    Отлично вставило и заменило, НО только один раз!

    Как сделать так что бы тег проставился во всём тексте несколько раз?

    Возможно есть другие варианты решения данной задачи, например, при помощи регулярных выражений, непосредственно в границе парсинга?
    Или вот в этой ветке похожая задача решалась при помощи макроса [ADDKEYS], но инструкции по его использованию я нигде не нашел.
     
    Последнее редактирование: 27 мар 2015
  2. Root

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

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Здравствуйте.

    Простите, но макроса или функции для решения вашей задачи сейчас в программе нет. Вашу потребность я учел, по срокам реализации (и будет ли это реализовано) я сейчас ничего вам сказать не могу.

    С уважением к вам, Сергей...
     
  3. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.431
    Адрес:
    Latvia
    можно попробовать регуляркой, в границе поиск-замена
    Код:
    re:([^\^]{1500,2500})</p>|$1<!--pagebreak--></p>
     
    Последнее редактирование: 28 мар 2015
  4. Mars

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

    Регистрация:
    27 мар 2015
    Сообщения:
    4
    Root, спасибо! думаю такой функционал бы полезен! Возможно, достаточно добавить в параметры макроса <IMORE> повторение.

    Вариант с регуляркой я рассматривал, но никак не получалось сделать без ошибок!
    Спасибо, за ваш вариант, но он тоже не срабатывает корректно.

    Например, есть исходный текст:

    HTML:
    <p>Реферат:</p><p>Муниципальное право как комплексная отрасль права</p><p>Содержание</p><p>Введение</p><p>1. Особенности муниципального права как комплексной отрасли права</p><p>2. Источники муниципального права</p>
    На выходе теги должны быть проставлены следующим образом:

    HTML:
    <p>Реферат:</p><p>Муниципальное право как комплексная отрасль права<!--pagebreak--></p><p>Содержание</p><p>Введение</p><p>1. Особенности муниципального права как комплексной отрасли права<!--pagebreak--></p><p>2. Источники муниципального права</p>
    После обработки регулярным выражением:
    Код:
    re:([^\^]{15,25})</p>|<!--pagebreak--></p>
    получается вот это:
    HTML:
    <p>Реферат:</p><p>Муниципальное право как <!--pagebreak--></p><p><!--pagebreak--></p><p>1. Особенности муниципального права как <!--pagebreak--></p><p>2. Источ<!--pagebreak--></p>
    Т.е., обрезается текст да и сами теги выводятся не в тех местах где планировалось.

    Буду благодарен за помощь в доработке выражения)
     
  5. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.431
    Адрес:
    Latvia
    Код:
    re:([^\^]{1500,2500})</p>|$1<!--pagebreak--></p>
     
  6. Mars

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

    Регистрация:
    27 мар 2015
    Сообщения:
    4
    О, здорово! Сейчас всё работает!
    Единственное, самый последний тег <!--pagebreak-->, проставляется после всего текста. Я его удалил при помощи конструкции:
    Код:
    <!--pagebreak-->{skip}|</p>
    kagorec, большое спасибо! Выручили))
     

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