Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: О шаблонизации
Форумы портала PHP.SU » PHP » Программирование на PHP » О шаблонизации

Страниц (1): [1]
 

1. STRELOK - 16 Января, 2010 - 20:10:11 - перейти к сообщению
Чтобы реализовать в коде различные конструкции вроде условий, циклов и прочего... Я пришел к выводу, что все равно придется переводить шаблон в php код... Т.е. придется либо юзать смарти либо нечто подобное... Так ли это???

В частности завис на вложенных условных конструкциях... Думаю регулярками не сделаешь. Они либо больше чем надо получают либо меньше =(

Что думаете?
(Добавление)
З.Ы.
Может можно как то исправить паттерн, чтобы вложенные условия, скажем:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. текст
  3. {if reg_error = true}
  4. <p class="user_reg_error">{reg_error_msg}</p>
  5. {endif}
  6. текст
  7. {if условие}
  8. код1
  9.  {if условие}
  10.  код2
  11.  {else}
  12.   код3
  13.   {endif}
  14. {else}
  15. код4
  16. {endif}
  17. текст
  18.  


работали нормально:

PHP:
скопировать код в буфер обмена
  1.  
  2.           public function Result($source)
  3.            {
  4.                    $pattern = "/\{\s*if\s+(.*?)\}\s*(.*?)\{\s*endif\s*?\}\s*/is";
  5.                    $result = preg_replace_callback($pattern, array($this, "ReplaceHandler"), $source);
  6.                    return $result;
  7.            }
  8.  
2. Nestor - 16 Января, 2010 - 22:31:37 - перейти к сообщению
никак, можно реализировать с помощью конечных автоматов
3. JustUserR - 17 Января, 2010 - 12:05:56 - перейти к сообщению
STRELOK Делайте разбор стеком - то есть по вложенности операторов
4. STRELOK - 17 Января, 2010 - 14:51:36 - перейти к сообщению
JustUserR пишет:
STRELOK Делайте разбор стеком - то есть по вложенности операторов

Не понял
5. JustUserR - 17 Января, 2010 - 18:11:59 - перейти к сообщению
STRELOK То есть разбираете по очереди выражение и с каждым открывающим тегом пополняете стек а с каждым закрывающим удаляете его - и соответственно если валидация прошла то выполняете код и условие по очереди

 

Powered by ExBB FM 1.0 RC1