Scarrr
Новичок
"поэтапный" разбор шаблона регулярным выражением
Добрый день всем.
Прошу помощи в следующем алгоритме.
Есть некий шаблон вида (это не Smarty!)
мне требуется осуществить действия следующего вида.
Первый этап:
Регулярным выражением вытаскиваются данные в массив следующего содержания:
Далее из текущего массива определяются те данные, которые окружены { .. } {/ .. } "тегами"
На втором этапе для элемента [2] из первой выборки должны будут выбраны данные
и для элемента [4]:
И так далее.
Т.е. каждое следующее "погружение" должно будет отбирать только 1-й непосредственный уровень прямого содержимого с разделением на html содержимое и контент, окруженный "тегами" {..}
Подскажите, плиз, какие регулярки тут надо использовать и каковы должны быть мои действия (а то я что-то совсем запутался).
И если есть хорошие примеры по моему случаю, поделитесь ими тоже.
Добрый день всем.
Прошу помощи в следующем алгоритме.
Есть некий шаблон вида (это не 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}
PHP:
[1] => {Table} ... {/Table}
Т.е. каждое следующее "погружение" должно будет отбирать только 1-й непосредственный уровень прямого содержимого с разделением на html содержимое и контент, окруженный "тегами" {..}
Подскажите, плиз, какие регулярки тут надо использовать и каковы должны быть мои действия (а то я что-то совсем запутался).
И если есть хорошие примеры по моему случаю, поделитесь ими тоже.