Это простая и быстрая замена строковой литеральной строки:
$code = str_replace('{for ', '<?php for (', $code);
$code = str_replace(' }', '){ ?>', $code);
$code = str_replace('{/for}', '<?php } ?>', $code);
Не будет работать, если somethhingbetween
содержит if(){ }
, потому что }
заменяется на ){ ?>
. Но для других случаев с {for condition }
и {/for}
этого достаточно.
Подход с использованием регулярных выражений в сочетании с простой заменой строк, при этом предполагается, что в цикле for не встречается }
(соответствует всем, кроме }
: [^}]+
)
$code = preg_replace('/{for ([^}]+)}/', '<?php for ($1) { ?>', $code);
$code = str_replace('{/for}', '<?php } ?>', $code);
Эта функция вообще не проверяет, вы несете ответственность за правильное открытие / закрытие {for}
и {/for}
s.
Если вам нужно выполнить PHP, вставьте PHP. Другой способ - написать собственный код для разбора. Вы можете посмотреть на шаблоны проектов, как Smarty .