Здравствуйте, я пытаюсь создать свой шаблонизатор. Смарти и аналоги не подходят, так как мне нужен узконаправленный функционал, связанный с php, js, ajax. Стандартные шаблонизаторы для этого не подходят, а если и подходят, то придётся слишком долго пилить под необходимый функционал.
В данный момент создаю что-то на подобии цикла, вот как выглядит разметка:
{{crossLoopStart fromController->messages as message and increment|i every loop}}<br/>
wow, this is message number {{message->id}} and text is: {{message->text}}<br/>
{{crossLoopEmpty}}<br/>
oh no! You haven't any message!<br/>
{{crossLoopEnd}}
На данный момент я написал следующее regexp-выражение:
/\{\{crossLoopStart\s([a-zA-Z0-9>-]+)\s(as\s([a-zA-Z>-]+))?\s?and\s(([a-zA-Z0-9]+\|)?([a-zA-Z0-9]+)\s([a-z]+)\sloop)?\}\}/
Сейчас оно парсит только вот эту часть:
{{crossLoopStart fromController->messages as message and increment|i every loop}}
Но я не знаю как получить, всё остальное, что находится между
{{crossLoopStart fromController->messages as message and increment|i every loop}}
и
{{crossLoopEmpty}}
Т.е. данный участок кода:
wow, this is message number {{message->id}} and text is: {{message->text}}
Проблема в том, что если использовать
(.+)
, то оно получит все символы. Это мне почти подходит, но я не знаю как сделать, чтобы оно взяло все символы до вот этой последовательности символов:
{{crossLoopEmpty}}
или до этой:
{{crossLoopEnd}}
Заранее спасибо!