За последние 24 часа нас посетили 16252 программиста и 1579 роботов. Сейчас ищут 1607 программистов ...

Конец строки

Тема в разделе "Регулярные выражения", создана пользователем rognorog, 12 дек 2014.

  1. rognorog

    rognorog Новичок

    С нами с:
    7 июл 2014
    Сообщения:
    330
    Симпатии:
    0
    Всем доброго! Я вообщем немного запутался и хочу разобраться, что нужно сделать, знающие ткните носом.
    Ситуация такая:
    Есть регулярка:
    Код (PHP):
    1. ~{(.+?)}(.+?){/\1\s(.+?)}~si
    И
    Есть блок:
    Код (PHP):
    1.     <p>
    2.         Система
    3.     </p>
    4. {/system <p>
    5.     Схема
    6. </p>} 
    Регулярка работает и блок тоже, все казалось бы хорошо, но как только я хочу сделать:
    Код (PHP):
    1.     <p>
    2.         Система
    3.     </p>
    4. {/system <p>
    5.     Схема
    6.     {map}
    7.         Карта
    8.     {/map}
    9. </p>} 
    И тут получается обрыв }: первого нет где map, а в конце остался где </p>.
    Код (PHP):
    1. <p>
    2.     Схема
    3.     {map
    4.         Карта
    5.     {/map}
    6. </p>} 
    Не могу сделать, мне надо чтобы в конце строки глянуло }.
    И было так:
    Код (PHP):
    1. <p>
    2.     Схема
    3.     {map}
    4.         Карта
    5.     {/map}
    6. </p> 
    Или я туплю просто, упустил что - то, я не могу ничего понять, но оно как-то на половину отрабатывает и я встрял по полной.
     
  2. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    чего только не придумают. страшная конструкция

    Добавлено спустя 1 минуту 41 секунду:
    а вообще. нужно описать чтоб искало не до первой встреченной }
    а до первой встреченной непарной }

    гугли)
     
  3. rognorog

    rognorog Новичок

    С нами с:
    7 июл 2014
    Сообщения:
    330
    Симпатии:
    0
    Почему страшная?
    Это мне и нужно, спасибо за совет, я просто не могу составить условие, не получается.
    Мне бы, хотя бы зацепку, что нужно использовать для поиска "до первой встреченной непарной".
    :)
    Всю жизнь, что и делаем гуглим :D
    Ты то шаришь, я знаю...
    А я вот сколько читаю про эти регулярки, как-то особо тоже и не освоился.
    Просто хочется для себя понимать, но, а так стараюсь решать - это другими путями.
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Легче взять готовый шаблонизатор, например twig. Шаблоны делают чтобы дизайнерам было легче.
     
  5. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.099
    Симпатии:
    1.243
    Адрес:
    там-сям
    ну не дизайнерам, а версталам.
    а на самом деле даже не для них, для себя, потому готовую верстку в шаблон всё равно программер превращает. это всё мифы, что кто-то не-программист берет расчудесный твиг и творит добро.
     
  6. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    имхо шаблоны программисту нужны чтоб разделить логику и визуальную часть. к тому же шаблон позволяет одинаковые данные рендерить (ща набежит недовольный терминологией человек) в разные шаблоны. допустим карту сайта можно генерировать одним скриптом и запихивать в html для людей и в xml для поисковиков. удобно, не?
     
  7. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Да, вернее верстальщика чем дизайнерам.
     
  8. rognorog

    rognorog Новичок

    С нами с:
    7 июл 2014
    Сообщения:
    330
    Симпатии:
    0
    Якобы компилированные шаблоны не интересуют.
    Зачем из html создавать язык программирования?
    Мне эти блоки нужны для изменения информации, они не должны знать программирование =)
    Код (PHP):
    1. <img src="{theme}/images/{basket}basket{/basket basket_active}.png" alt="Корзина">
     
  9. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Так сам PHP и есть шаблонитизатор
    Код (PHP):
    1. <img src="<?=$theme?>/images/<?=$basket?>.png" alt="Корзина">
     
  10. rognorog

    rognorog Новичок

    С нами с:
    7 июл 2014
    Сообщения:
    330
    Симпатии:
    0
    А то я не знал, ты прям открыл находку. Но ты ошибся, я делаю немного другую концепцию для организации шаблона и я не хочу, чтобы у меня была смесь ядерного взрыва.
    По теме есть, что сказать? Как организовать поиск " до первой встреченной непарной } " ? Если нет! Лучше промолчи.
    Код (PHP):
    1. <div class="basket">
    2.     {empty}
    3.         <div class="scroll basketScroll">
    4.             <table>
    5.                 {basketPresents}
    6.                 {basket}
    7.             </table>
    8.         </div>
    9.         <div class="bottom"></div>
    10.         <div>
    11.             Итого: {allsumm} руб.
    12.         </div>
    13.         <div class="bottom"></div>
    14.         <a href="" class="link">
    15.             Оформить заказ
    16.         </a>
    17.         <div class="bottom"></div>
    18.         <a href="">
    19.             Очистить корзину
    20.         </a>
    21.     {/empty <div class="bottom"></div>{empty}<div class="bottom"></div>}
    22. </div> 
    Мне удобно, тем, что поделена логика, html отдельно от php и все отдельно и js и css, мы можем менять их динамично. Это удобно и здорово.

    Кстате теги в нутри отрабатываю свободно.
    Код (PHP):
    1. {block}
    2.     {tag}
    3. {/block {tag}}
    Работает успешно без обрывов.
    Но только потому, что теги за ранее отрабатывают.