先上代码

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循环的处理的更多相关文章

  1. 推荐13款javascript模板引擎

    javaScript 在生成各种页面内容时如果能结合一些模板技术,可以让逻辑和数据之间更加清晰,本文介绍 X 款 JavaScript 的模板引擎.(排名不分先后顺序) 1. Mustache 基于j ...

  2. Javascript最简单的模板引擎

    非常简单,性能估计一般,方法最原始. //第一代模板引擎 //只支持{{key}}的替换,不支持语句 //支持Object和Array对象 function template_setdata(temp ...

  3. SS - DIY一个前端模板引擎.(一)

    前端MVVM 模式有点很多,完全摆脱了意大利面条式的代码. 个人认为,所有MVVM 的框架基础就是一个高性能的JS模板引擎,它极大简化了 DOM 操作, 使页面渲染和业务逻辑彻底分离. 为了理解模板引 ...

  4. DIY一个前端模板引擎.(一)

    前端MVVM 模式有点很多,完全摆脱了意大利面条式的代码.个人认为,所有MVVM 的框架基础就是一个高性能的JS模板引擎,它极大简化了 DOM 操作, 使页面渲染和业务逻辑彻底分离.为了理解模板引擎原 ...

  5. js模板引擎介绍搜集

    js模板引擎越来越多的得到应用,如今已经出现了几十种js模板引擎,国内各大互联网公司也都开发了自己的js模板引擎(淘宝的kissy template,腾讯的artTemplate,百度的baiduTe ...

  6. 研究分析JS中的三种逻辑语句

    JS中的三种逻辑语句:顺序.分支和循环语句. 一.顺序语句 代码规范如下:1. <script type="text/javascript"> var a = 10;  ...

  7. Smarty 模板引擎简介

    前言 Smarty是一个使用PHP写出来的模板引擎,是目前业界最著名的PHP模板引擎之一.它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑 ...

  8. Handlebars 模板引擎之前后端用法

    前言 不知不觉间,居然已经这么久没有写博客了,坚持还真是世界上最难的事情啊. 不过我最近也没闲着,辞工换工.恋爱失恋.深圳北京都经历了一番,这有起有落的生活实在是太刺激了,就如拿着两把菜刀剁洋葱一样, ...

  9. 基于.NET的免费开源的模板引擎---VTemplate(转)

    1.VTemplate模板引擎的简介 VTemplate模板引擎也简称为VT,是基于.NET的模板引擎,它允许任何人使用简单的类似HTML语法的模板语言来引用.NET里定义的对象.当VTemplate ...

随机推荐

  1. Codeforces 622B The Time 【水题】

    B. The Time time limit per test 1 second memory limit per test 256 megabytes input standard input ou ...

  2. CPU与内存(经典问答)

    原文:http://www.cnblogs.com/xkfz007/archive/2012/10/08/2715163.html 下面是网上看到的一些关于内存和CPU方面的一些很不错的文章. 整理如 ...

  3. C++的辅助工具介绍

    1 文档类  (1) Doxygen  参考站点:http://www.doxygen.org  Doxygen是一种适合C风格语言(如C++.C.IDL.Java甚至包括C#和PHP)的.开放源码的 ...

  4. C#中反射的使用(How to use reflect in CSharp)(3)Emit的使用

    Emit意在动态构建一个可以执行(当然也就可以反射)或者只可以反射的动态库. 个人认为在不得不使用反射的情况下,使用Emit会使得效率提升空间很大.亦或者动态插件模式的软件设计中会用到. 依然2%的废 ...

  5. SSH登录失败:Host key verification failed

    转载自:https://help.aliyun.com/knowledge_detail/41471.html 注意:本文相关 Linux 配置及说明已在 CentOS 6.5 64 位操作系统中进行 ...

  6. secureCRT使用VIM时对语法高亮

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...

  7. Kerberos和NTLM - SQL Server

    当我们使用Windows Authentication去连接SQL Server的时候,SQL Server可能会使用Kerberos或者是NTLM来进行认证,有时间就会因为认证失败的缘故造成各种登录 ...

  8. jsp页面用el表达式获取枚举的code

    jsp页面用el表达式获取枚举的code <c:set var="D_BUSINESS" value="<%=DeptEnum.D_BUSINESS%> ...

  9. SQL Server 数据导入Mysql详细教程

  10. androidstudio can't run git.exe

    今天用android studio从git下载项目的时候遇到一个问题,提示说can't run git.exe 问了下度娘以及谷歌.但是无果,后面捣鼓了一阵,下了一个git windows版本后,在a ...