Вы не зашли.
Главная » PHP » Распарсить шаблон
#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);?>
hmm hmm
Пробовал сначала открывающие теги получить, потом закрывающие и их соединить, но не то.
Натан ротшильд :
Кто владеет информацией, тот владеет миром
#2. Nu3oN Off (11)
Moderator
2010.10.18 10:10
тоже интересно...
Только мне еще интересна гибкая елсеиф...
Что бы можно было сколько угодно этих элсеифоф воткнуть
Я буду лучше голоден, но между креслом и рулем и на дороге.
#3. Gemorroj On (107)
Administrator
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
)
 
)
Натан ротшильд :
Кто владеет информацией, тот владеет миром
#7. Gemorroj On (107)
Administrator
2010.10.31 16:04
тоже что-то не выходит
#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; ?>", и тд.
Натан ротшильд :
Кто владеет информацией, тот владеет миром
#10. Gemorroj On (107)
Administrator
2010.11.07 13:01
не уверен, но судя по генерируемому Smarty коду, он так и делает)
Страниц: 1 2 Все
Главная
WEB
PunBB Mod v0.6.2
0.014 s