Преобразование тегов в теги PHP с использованием PHP - PullRequest
0 голосов
/ 02 апреля 2011

Как я могу изменить

{for ...cond.... }
somethinginbetween
{/for}

на

<?php for (...cond...){ ?>
somethinginbetween
<?php } ?>

1 Ответ

1 голос
/ 02 апреля 2011

Это простая и быстрая замена строковой литеральной строки:

$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 .

...