Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Распарсить шаблон
 
 автор: WapMorgan   (19.10.2010 в 15:19)   письмо автору
 
 

Возникла проблема.
Не получается распарсить блоки {if $var}...{/if}.

<?php

$a 
'{if $a}
{if $b}
a
{/if}
b
{/if}

{if $c}
c
{/if}'
;


preg_match_all('~\{if (.*)\}(.*?)\{\/if\}~sUu'$a$tagsPREG_SET_ORDER);
print_r($tags);



?>

:/ :/
Пробовал сначала открывающие теги получить, потом закрывающие и их соединить, но не то.

  Ответить  
 
 автор: nikita2206   (19.10.2010 в 22:09)   письмо автору
 
   для: WapMorgan   (19.10.2010 в 15:19)
 

Блин, да как же вы не понимаете, регулярными выражениями нельзя парсить вложенные структуры. Нужно самому пробегаться по тексту...

Если ты пишешь шаблонизатор, то просто компилируй этот шаблон в пхп код, а потом исполняй его... Компилировать можно простой заменой, например $str = preg_replace('!{if (.+?)}!', '<?php if(\1){ ?>', $str);
Но лучше просто использовать ПХП, как он и задумывался, - как шаблонизатор.

  Ответить  
 
 автор: WapMorgan   (19.10.2010 в 23:53)   письмо автору
 
   для: nikita2206   (19.10.2010 в 22:09)
 

одним применением регулярных выражений - да, нельзя, знаю.
мне бы хоть алгоритм обработки уловить.

  Ответить  
 
 автор: psychomc   (26.10.2010 в 01:21)   письмо автору
 
   для: WapMorgan   (19.10.2010 в 23:53)
 

1) прочитать файл
2) заменить { на <?php , } на ?> и т.д
3) записать файл

  Ответить  
 
 автор: WapMorgan   (25.10.2010 в 20:31)   письмо автору
 
   для: WapMorgan   (19.10.2010 в 15:19)
 

;/

  Ответить  
 
 автор: .....   (25.10.2010 в 21:43)
 
   для: WapMorgan   (25.10.2010 в 20:31)
 

читайте про (?R) рекурсия в регулярных выражениях

  Ответить  
 
 автор: .....   (25.10.2010 в 21:46)
 
   для: WapMorgan   (25.10.2010 в 20:31)
 

или при пофрагментном чтенни считайте незакрытые теги

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования