"поэтапный" разбор шаблона регулярным выражением

Статус
В этой теме нельзя размещать новые ответы.

Scarrr

Новичок
"поэтапный" разбор шаблона регулярным выражением

Добрый день всем.
Прошу помощи в следующем алгоритме.
Есть некий шаблон вида (это не Smarty!)
PHP:
<h1>Report start</h1>
<div>This is a sample report</div>
{Report page='paginate'}
<b>Test!</b>
        {Head}
        <!-- проверочный коммент -->
        {Title}Title Test{/Title}
        {Style}/css/style1{/Style}
        {/Head}
        {Query sql="select NOW();"}
        <h1>Preved! \o/</h1>
        {ReportBody}
                {Table width="100%" border="1"}
                                {TR}
                                        {TD column="f1"}Превед!{/TD}
                                        {TD column="f2"}{/TD}
                                        {TD column="f3"}{/TD}
                                {/TR}
                        {ForQuery query="select * from table"}
                                {TR}
                                        {TD column="f1"}Превед!{/TD}
                                        {TD column="f2"}{/TD}
                                        {TD column="f3"}{/TD}
                                {/TR}
                        {/ForQuery}
                {/Table}
        {/ReportBody}
{/Report}
 <span>middle part of report</span>
{Footer}
        {Table}
                {TR}
                        {TD}=){/TD}
                        {TD}:){/TD}
                        {TD}:({/TD}
                        {TD};({/TD}
                        {TD};){/TD}
                {/TR}
        {/Table}
{/Footer}  
<div>end of report</div>
мне требуется осуществить действия следующего вида.
Первый этап:
Регулярным выражением вытаскиваются данные в массив следующего содержания:
PHP:
[1] => <h1>Report start</h1>
<div>This is a sample report</div>
[2] => {Report page='paginate'} ... {/Report} //-- (в этом месте также все, что включено между {Report} {/Report} )
[3] =>  <span>middle part of report</span>
[4] => {Footer} ... {/Footer} /-- (в этом месте также все, что включено между {Footer} {/Footer} )
[5] => <div>end of report</div>
Далее из текущего массива определяются те данные, которые окружены { .. } {/ .. } "тегами"
На втором этапе для элемента [2] из первой выборки должны будут выбраны данные
PHP:
[1] => <b>Test!</b>
[2] => {Head}...{/Head}
[3] => {Query sql="select NOW();"}
[4] => {ReportBody} ... {/ReportBody}
и для элемента [4]:
PHP:
[1] => {Table} ... {/Table}
И так далее.
Т.е. каждое следующее "погружение" должно будет отбирать только 1-й непосредственный уровень прямого содержимого с разделением на html содержимое и контент, окруженный "тегами" {..}

Подскажите, плиз, какие регулярки тут надо использовать и каковы должны быть мои действия (а то я что-то совсем запутался).
И если есть хорошие примеры по моему случаю, поделитесь ими тоже.
 

440hz

php.ru
как-то мне всегда хватало однопроходных шаблонов даже на больших проектах.

=)

<title>{TITLE}</title>

-~{}~ 13.09.07 13:05:

[3] => {Query sql="select NOW();"}
а уж ТАКОЕ в шаблоны пихать - ваще бред.

ИМХО пишем на php еще один php?
бред...
 

Scarrr

Новичок
440hz
задача поставлена именно таким образом
бред, не бред - но с этим надо сработаться :)
 

Scarrr

Новичок
Автор оригинала: Zetruger
пляши отсюда
http://phpclub.ru/detail/
"Регулярные выражения"
читал, не раз читал, не нашел как подобного рода одно-проходные регулярки составить
фактически задача сводится к тому, чтобы регулярку сделать нужную
дальше уже сам :)
 

Фанат

oncle terrible
Команда форума
бред, не бред - но с этим надо сработаться
тебе надо - ты и срабатывайся.

1. кем поставлена задача?
2. как обоснована?
3. какова парадигма шаблонов, допускающая такое применени?

Если ты не хочешь отвечать на эти вопросы, то учти - задача поставлена тебе. А не нам. И справляться с ней ты тоже будешь сам. Без нас.
 

440hz

php.ru
задача поставлена именно таким образом
убей постановщика задач или архитектора если они не знают минимальных основ проектирования и шаблонизирования - облегчи себе жизнь.

-~{}~ 13.09.07 13:48:

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

Scarrr

Новичок
Фaнaт
440hz
какая разница, какая парадигма, какие принципы и обоснования?
мы влезаем в дебри архитектуры, о которых тут я ни словом, ни полусловом не упоминал, особенно в контексте "помогите с архитектурой проекта"

товарищи программисты, мы начинаем разговаривать уже не о том

задача, если что, распарсить шаблон указанным образом =)
 

Фанат

oncle terrible
Команда форума
как я уже говорил - задача распарсить этот "шаблон" стоит перед тобой. а не перед нами. вот и решай её.
а нам это не интересно.
 

Scarrr

Новичок
ага, всем спасибо за помощь, коллеги


кто тут модератор? тему закрывать уже можете, сам как нибудь справлюсь
 

Bakti9rov

!*|=?
Scarrr
не, ну действительно... Такого извращенного шаблона я к примеру в жизни не видел... Логику (а тем боле операции с БД) переносить в шаблоны, HTML-теги заключать в фигурные скобки... %)))

Копнуть предлагаю в конечные автоматы :D - построить синтасический анализатор, а регулярки в топку, ибо у тебя от них шаблон парситься буит в течение N-ных секунд. ;)
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху