Вы не зашли.
#1.
Morgan
Off
(10)
Участник
2010.10.17 22:10
Возникла проблема.
Не получается распарсить блоки {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 10:10
тоже интересно...
Только мне еще интересна гибкая елсеиф...
Что бы можно было сколько угодно этих элсеифоф воткнуть
Я буду лучше голоден, но между креслом и рулем и на дороге.
тут, наверное, думать нужно) в регулярках есть возможность задать рекурсию, значит вложенность, через нее,
например, реализовать можно.
#4.
Nu3oN
Off
(11)
Moderator
2010.10.18 10:10
морган, как вариант закрывающий тег писать с переменной типа
{if $a}
...
{/if $a}
Отредактировано Nu3oN (2010.10.18 10:10)
Я буду лучше голоден, но между креслом и рулем и на дороге.
#5.
Morgan
Off
(10)
Участник
2010.10.18 14:02
Nu3oNтакая практика уже есть, но она неудобная и многословная
Натан ротшильд :
Кто владеет информацией, тот владеет миром
#6.
Morgan
Off
(10)
Участник
2010.10.31 14:02
не получается заюзать рекурсию.
Код:
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 17:05
если не {if
(.*), все работает на отлично
Натан ротшильд :
Кто владеет информацией, тот владеет миром
#9.
Morgan
Off
(10)
Участник
2010.11.06 22:10
Насколько будет кривой способ?
Просто заменить все "{$if ***}" на "<?php if(***): ?>", а "{/if}" на "<?php endif; ?>", и тд.
Натан ротшильд :
Кто владеет информацией, тот владеет миром
не уверен, но судя по генерируемому Smarty коду, он так и делает)