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

时间:2011-04-02 10:17:38

标签: php tags replace

如何更改

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

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

1 个答案:

答案 0 :(得分:1)

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

$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}来提供该功能。

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