使用PHP将标记转换为PHP标记

使用PHP将标记转换为PHP标记,php,tags,replace,Php,Tags,Replace,我怎样才能改变 {for ...cond.... } somethinginbetween {/for} 到 两人之间的事 这是一个快速而肮脏的字符串文字字符串替换: $code = str_replace('{for ', '<?php for (', $code); $code = str_replace(' }', '){ ?>', $code); $code = str_replace('{/for}', '<?php } ?>', $code); 此函数不

我怎样才能改变

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


两人之间的事

这是一个快速而肮脏的字符串文字字符串替换:

$code = str_replace('{for ', '<?php for (', $code);
$code = str_replace(' }', '){ ?>', $code);
$code = str_replace('{/for}', '<?php } ?>', $code);
此函数不进行任何验证,您有责任为其提供正确打开/关闭的
{for}
{/for}
s


如果需要执行PHP,请插入PHP。另一种方法是编写自己的解析代码。您可以查看模板项目,例如。

Is的可能副本是专门针对标记的
,或者它可以使用该语言的任何标记它可以使用if,else if,elseif,foreach,while,do while,nothing else您需要它做什么?您要将smarty模板转换为php文件吗?如果是这样的话,我真的会用手来做。您还可以像这样使用php标记的替代版本:而不是
for(){..}
编写:
for():。。。。endfor使用它,您可以将每个{for cond}替换为,并将每个/for替换为适用于if、foreach、switch。。。。。在这里,我感觉这可以通过循环中的两个pregmatch语句来实现,例如,获取每一组{for cond}{/for},然后将其替换为php代码并循环所有项。然而,我对正则表达式的熟练程度极低,我现在真的需要这段代码来获得荣誉。谢谢。这将把所有的}替换为{?>但我不想这样做。@user658911:添加了正则表达式方法。请注意,
for
!=
foreach
。因此您必须使用类似于
{for$i=0;$ii的东西。如果您使用可选的php语法,那么您可以这样做替换:
{for
with
$code = str_replace('{for ', '<?php for (', $code);
$code = str_replace(' }', '){ ?>', $code);
$code = str_replace('{/for}', '<?php } ?>', $code);
$code = preg_replace('/{for ([^}]+)}/', '<?php for ($1) { ?>', $code);
$code = str_replace('{/for}', '<?php } ?>', $code);