php模板引擎是如何解析循环结构的?给一个简单的例子吧
1个回答
展开全部
如果你用的是框架里标识的循环标签,那他们会在模板渲染的时候将这个循环标签转换为php原生的for或foreach标签以便再次读取。
$content = preg_replace(array('/\{\$(\w+)\}/','/{:(\w+)(\([\S+\,?]*\))}/'),array('<?php echo \$\1;?>','<?php \1\2;?>'),$content);
已经是php原生的循环代码再解析的时候就直接执行该文件就出页面了。
ob_start();
ob_implicit_flush(0);
include $file;
$content = ob_get_clean();
echo $content;
$content = preg_replace(array('/\{\$(\w+)\}/','/{:(\w+)(\([\S+\,?]*\))}/'),array('<?php echo \$\1;?>','<?php \1\2;?>'),$content);
已经是php原生的循环代码再解析的时候就直接执行该文件就出页面了。
ob_start();
ob_implicit_flush(0);
include $file;
$content = ob_get_clean();
echo $content;
追问
没用模板引擎,只是想知道一些简单的例子,比如说CI里面的一段代码
类似这样的模板,它是如何做到解析的?给个思路也可以
追答
哦,我没用过CI,不过渲染模板的道理应该都是一样的。
只要把
变成
就可以了,至于具体的操作流程跟上述方法差不多,只要换一个正则表达式即可。
首先获得你的模板内容,将其赋值给$content
$content = str_replace('','',$content);
这样一来php再次执行代码的时候就能够读取php源码并执行他们,进而输出内容。
具体步骤可以看:http://a605739030.blog.163.com/blog/static/162072117201110284315624/
这是我之前研究时看过的,希望对你有帮助。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询