模板引擎逻辑语句处理之对单层for循环的处理
先上代码
private function moldforExt(){//模板单层For循环处理
$SQL=$this->sql_obj;
$URL=$this->url_obj;
require($this->dataFile);
$con=$this->moldFileContent;
$con=str_replace("\n","<#tmoldbr#>",$con);
$preg_for_str="/<!\-\-\s*for\[([a-zA-Z_\-0-9]+):([a-zA-Z_\-0-9]+)\]\s*\-\->([^!]*)<!\-\-\s*endfor\s*\-\->/";
preg_match_all($preg_for_str,$con,$preg_for_match);
$preg_for_num=count($preg_for_match[0]);
for($for_tem_i=0;$for_tem_i<$preg_for_num;$for_tem_i++){
$tem_for_st=$preg_for_match[1][$for_tem_i];
$tem_for_ed=$preg_for_match[2][$for_tem_i];
if(isset($$tem_for_st)&&isset($$tem_for_ed)){
$for_tem_start=$$tem_for_st;
$for_tem_end=$$tem_for_ed;
$for_tem_con="";
for($for_tem_j=$for_tem_start;$for_tem_j<$for_tem_end;$for_tem_j++){
$tttem_for_com=$preg_for_match[3][$for_tem_i];
$tttem_for_com=str_replace("({".$tem_for_st."})",$for_tem_j,$tttem_for_com);
$for_tem_con.=$tttem_for_com;
}
$con=str_replace($preg_for_match[0][$for_tem_i],$for_tem_con,$con);
}
}
$this->moldFileContent=str_replace("<#tmoldbr#>","\n",$con);
}
其实里面用到的还是基于正则表达式
在模板中所写的for循环样式如下
<!-- for[strat:end] -->
...
HTML代码
...
<!-- endfor -->
将它写成html注释的形式是为了防止在只浏览模板文件时造成排版错误。
for循环的开始标识start会在模板数据文件中对$start的存在进行检测,这里面用到了PHP内部的可变变量,讲一个变量的值作为一个变量名来使用。
模板引擎逻辑语句处理之对单层for循环的处理的更多相关文章
- 推荐13款javascript模板引擎
javaScript 在生成各种页面内容时如果能结合一些模板技术,可以让逻辑和数据之间更加清晰,本文介绍 X 款 JavaScript 的模板引擎.(排名不分先后顺序) 1. Mustache 基于j ...
- Javascript最简单的模板引擎
非常简单,性能估计一般,方法最原始. //第一代模板引擎 //只支持{{key}}的替换,不支持语句 //支持Object和Array对象 function template_setdata(temp ...
- SS - DIY一个前端模板引擎.(一)
前端MVVM 模式有点很多,完全摆脱了意大利面条式的代码. 个人认为,所有MVVM 的框架基础就是一个高性能的JS模板引擎,它极大简化了 DOM 操作, 使页面渲染和业务逻辑彻底分离. 为了理解模板引 ...
- DIY一个前端模板引擎.(一)
前端MVVM 模式有点很多,完全摆脱了意大利面条式的代码.个人认为,所有MVVM 的框架基础就是一个高性能的JS模板引擎,它极大简化了 DOM 操作, 使页面渲染和业务逻辑彻底分离.为了理解模板引擎原 ...
- js模板引擎介绍搜集
js模板引擎越来越多的得到应用,如今已经出现了几十种js模板引擎,国内各大互联网公司也都开发了自己的js模板引擎(淘宝的kissy template,腾讯的artTemplate,百度的baiduTe ...
- 研究分析JS中的三种逻辑语句
JS中的三种逻辑语句:顺序.分支和循环语句. 一.顺序语句 代码规范如下:1. <script type="text/javascript"> var a = 10; ...
- Smarty 模板引擎简介
前言 Smarty是一个使用PHP写出来的模板引擎,是目前业界最著名的PHP模板引擎之一.它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑 ...
- Handlebars 模板引擎之前后端用法
前言 不知不觉间,居然已经这么久没有写博客了,坚持还真是世界上最难的事情啊. 不过我最近也没闲着,辞工换工.恋爱失恋.深圳北京都经历了一番,这有起有落的生活实在是太刺激了,就如拿着两把菜刀剁洋葱一样, ...
- 基于.NET的免费开源的模板引擎---VTemplate(转)
1.VTemplate模板引擎的简介 VTemplate模板引擎也简称为VT,是基于.NET的模板引擎,它允许任何人使用简单的类似HTML语法的模板语言来引用.NET里定义的对象.当VTemplate ...
随机推荐
- TypeScript学习笔记(七):模块
JavaScript中的模块 在学习TypeScript的模块之前我们先看看在JavaScript中的模块是如何实现的. 模块的好处 首先我们要了解使用模块的好处都有什么? 模块化.可重用: 封装变量 ...
- iPhone Push消息全攻略.1
要做一个iPhone Push消息的需求,从简单test的开始. 1.先添加一个app ID 2.点击Edit来配置push服务. 3.生成两个证书,一个用于开发,一个用于发布. 4.按下图操作创建一 ...
- 当LinkButton无效时,光标不显示为手型
在Flex组件LinkButton里,我们可以用useHandCursor属性来控制是否使用手型光标.现在我们要实现在LinkButton的enable=false时,useHandCursor=fa ...
- PC/UVa 题号: 110101/100 The 3n+1 problem (3n+1 问题)
The 3n + 1 problem Background Problems in Computer Science are often classified as belonging to a ...
- VS DLL 复制本地
1.引用一个DLL,需要指定路径,复制本地的意思是 把这个DLL复制到exe的Debug目录(调试的时候). 2.复制到本地的动作是在生成的时候执行的,清理的时候会删除. 3.从外部引用一个DLL,不 ...
- Eclipse下如何导入jar包【转载】
我们在用Eclipse开发程序的时候,经常想要用到第三方的jar包.这时候我们就需要在相应的工程下面导入这个jar包.以下配图说明导入jar包的步骤. 1.右击工程的根目录,点击Properties进 ...
- Codeforces Round #192 (Div. 1) A. Purification 贪心
A. Purification Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/329/probl ...
- Codeforces Round #277 (Div. 2) A. Calculating Function 水题
A. Calculating Function Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/4 ...
- Cocos2d-x学习笔记(10)(CCMenu菜单)
1.CCMenu创建方式 CCMenu* menu = CCMenu::create(cocos2d::CCMenuItem* item,--)參数为CCMenuItem菜单项的对象可变參数列表 2. ...
- DOS命令生成文件列表
DOS命令窗口,生成文件列表命令格式:dir xmlFiles /b >list.txt dir 文件列表相关命令 xmlFiles 待生成文件所在文件夹,在dos命令窗口根目录下,省略前缀.别 ...