Вы не зашли.
#1.
Morgan
Off
(10)
Участник
2010.10.17 18:06
Возникла проблема.
Не получается распарсить блоки {if $var}...{/if}.
Код:
span style="color: #0000BB"><?php$a = '{if $a}{if $b}a{/if}b{/if}{if $c}c{/if}';preg_match_all('~\{if (.*)\}(.*?)\{\/if\}~sUu', $a, $tags, PREG_SET_ORDER);print_r($tags);?> |
Пробовал сначала открывающие теги получить, потом закрывающие и их соединить, но не то.
Натан ротшильд :
Кто владеет информацией, тот владеет миром
#2.
Nu3oN
Off
(11)
Moderator
2010.10.18 06:06
тоже интересно...
Только мне еще интересна гибкая елсеиф...
Что бы можно было сколько угодно этих элсеифоф воткнуть
Я буду лучше голоден, но между креслом и рулем и на дороге.
тут, наверное, думать нужно) в регулярках есть возможность задать рекурсию, значит вложенность, через нее,
например, реализовать можно.
#4.
Nu3oN
Off
(11)
Moderator
2010.10.18 06:06
морган, как вариант закрывающий тег писать с переменной типа
{if $a}
...
{/if $a}
Отредактировано Nu3oN (2010.10.18 06:06)
Я буду лучше голоден, но между креслом и рулем и на дороге.
#5.
Morgan
Off
(10)
Участник
2010.10.18 10:10
Nu3oNтакая практика уже есть, но она неудобная и многословная
Натан ротшильд :
Кто владеет информацией, тот владеет миром
#6.
Morgan
Off
(10)
Участник
2010.10.31 11:11
не получается заюзать рекурсию.
Код:
span style="color: #0000BB"><?php$line = '{if a} {if b}test{/if}test1{/if}'; preg_match_all('#\{if (.*)\} (?: (.*) | (?R) ) \{\/if\}#xUsi', $line, $m);print_r($m);?> |
--->>>
Код:
Array |
( |
[0] => Array |
( |
[0] => {if a} {if b}test{/if} |
) |
|
[1] => Array |
( |
[0] => a |
) |
|
[2] => Array |
( |
[0] => {if b}test |
) |
|
) |
Натан ротшильд :
Кто владеет информацией, тот владеет миром
#8.
Morgan
Off
(10)
Участник
2010.10.31 14:02
если не {if
(.*), все работает на отлично
Натан ротшильд :
Кто владеет информацией, тот владеет миром
#9.
Morgan
Off
(10)
Участник
2010.11.06 19:07
Насколько будет кривой способ?
Просто заменить все "{$if ***}" на "<?php if(***): ?>", а "{/if}" на "<?php endif; ?>", и тд.
Натан ротшильд :
Кто владеет информацией, тот владеет миром
не уверен, но судя по генерируемому Smarty коду, он так и делает)
Gemorroj а ты используешь шаблонизатор?
и если да, то какой?
Натан ротшильд :
Кто владеет информацией, тот владеет миром
иногда. Smarty. на данный момент я завяз на 1 большем проекте и развитие как-то приостановилось. топчусь на месте. так что...