ASP模板类[实现一维循环和二维循环,可以从文件、数据库、变量取摸板]

变量|模板|数据|数据库|循环

<%
'=========================================================
' File: class_template.asp
' Version:1.0
' Date: 2004-5-7
' Script Written by R.H
' Description: ASP Template Class
'=========================================================
' Copyright (C) 2004 Interflower Studios. All rights reserved.
' Web: http://www.interflower.cn
' Need help? Contact: ranhuan@msn.com
'=========================================================

'=========================================================
'模板中替换的部分用{{%}}表示
'模板中的循环用<!-- BEGIN % -->开始 <!-- END % -->结束 支持一次嵌套

Class Template
Private tmp
Private tpl_dir, tpl, tpl_blk
Private var_list, blk_list, blk_var_list
Private re, match, matchs
Private Sub class_Initialize
sql = ""
tpl_dir = "templates/"
tpl = ""
blk=""
Set var_list = Server.CreateObject("Scripting.Dictionary")
Set blk_list = Server.CreateObject("Scripting.Dictionary")
Set blk_var_list = Server.CreateObject("Scripting.Dictionary")
Set re = New RegExp
End Sub

'取得主体模板
'========================

'从变量取出
Public Sub SetTpl(tplvar)
tpl = tplvar
End Sub

' 从DB中取出,自己修改sql语句
Public Sub SetTplDb(tplname)
Dim sql, rs
Set rs = Server.CreateObject("ADODB.RecordSet")
sql = "SELECT content FROM templates WHERE name = '"&tplname&"'"
rs.Open sql,conn,1,1
If rs.RecordCount <> 1 Then
Response.Write("数据库错误!<br>")
Response.End()
End If
tpl = rs("content")
rs.Close
Set rs = Nothing
End Sub

'从文件取出
Public Sub SetTplFile(tplfile)
Dim FSO, oFile
Set FSO = Server.Createobject("Scripting.FileSystemObject")
If FSO.FileExists(Server.Mappath(tpl_dir & tplfile)) then
Set oFile = FSO.OpenTextFile(Server.Mappath(tpl_dir & tplfile))
tpl = oFile.ReadAll
oFile.Close
Set oFile = Nothing
Else
Response.Write "模板文件不存在!<br>"
End if
Set FSO = nothing
End Sub

'取得区块模板
'========================

'从变量取出
Public sub SetBlk(blkname, tplvar)
re.IgnoreCase = True
re.Global = True
re.Pattern = {{ & blkname & }}
tpl = re.Replace(tpl, tplvar)
rs.Close
End Sub

'从数据库取出
Public sub SetBlkDb(blkname, tplname)
Dim sql, rs
Set rs = Server.CreateObject("ADODB.RecordSet")
sql = "SELECT * FROM templates WHERE name = '"&tplname&"'"
rs.Open sql,conn,1,1
tmp = rs("content")
rs.Close
SetBlk blkname, tmp
set rs = Nothing
End Sub

'从文件取出
Public sub SetBlkFile(blkname, tplfile)
Dim FSO, oFile
Set FSO = createobject("Scripting.FileSystemObject")
If FSO.FileExists(server.mappath(tpl_dir &tplfile)) Then
Set oFile = FSO.OpenTextFile(Server.MapPath(tpl_dir &tplfile))
tmp = oFile.ReadAl
SetBlock blkname, tmp
oFile.Close
set oFile = Nothing
Else
Response.Write "区块模板文件不存在!<br>"
End If
Set FSO = Nothing
End Sub

'设置变量替换值
'========================

'简单替换
Public Sub SetVar(sName, sValue)
If var_list.Exists(sName) then
var_list.Remove sName
var_list.Add sName, sValue
Else
var_list.Add sName, sValue
End if
End Sub

'简单替换 追加数据
Public Sub AppendVar(sName, sValue)
If var_list.Exists(sName) then

时间: 2024-09-23 17:40:36

ASP模板类[实现一维循环和二维循环,可以从文件、数据库、变量取摸板]的相关文章

Java中增强for循环在一维数组和二维数组中的使用方法_java

一维数组: int[] a={1,2,3}; for(int i:a) { System.out.print(i+" "); } 输出:1 2 3 二维数组: import java.util.Scanner; public class tet { public static void main(String[] args) { //int[][] b={{1,2,3},{4,5,6}};行 int[][] a=new int[5][];//必须明确行数 for(int i=0;i&l

asp.net 生成、解析条形码和二维码

原文 asp.net 生成.解析条形码和二维码 一.条形码 一维码,俗称条形码,广泛的用于电子工业等行业.比如我们常见的书籍背面就会有条形码,通过扫描枪等设备扫描就可以获得书籍的ISBN(International standard book number,国际标准书号).编码方式也很多,比如Code39和Code128等等,这两个编码的类代码见code39和code128,摘自于互联网,稍加修改(比如文字置于条码的中间位置).读者可以直接拷贝自项目中使用,这里简单演示一下,以Code128为例

详解C++中的一维数组和二维数组_C 语言

C++一维数组 定义一维数组 定义一维数组的一般格式为:     类型标识符  数组名[常量表达式]; 例如: int a[10]; 它表示数组名为a,此数组为整型,有10个元素. 关于一维数组的几点说明: 1) 数组名定名规则和变量名相同,遵循标识符定名规则. 2) 用方括号括起来的常量表达式表示下标值,如下面的写法是合法的: int a[10]; int a[2*5]; int a[n*2]; //假设前面已定义了n为常变量 3) 常量表达式的值表示元素的个数,即数组长度.例如,在"int

PHP实现一维数组转二维数组的方法

 这篇文章主要介绍了PHP实现一维数组转二维数组的方法,实例分析了php操作数组的技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了PHP实现一维数组转二维数组的方法.分享给大家供大家参考.具体实现方法如下:   1 2 3 4 5 6 7 8 9 10 11 <?php $asr[1] = array("a","b","c","d"); $asr[2] = array("a",

在java中一维数组和二维数组有什么区别吗?

问题描述 在java中一维数组和二维数组有什么区别吗? 求大神指点java中一维数组和二维数组的区别,为什么一位数组是一行 二维数组可以定义多行 解决方案 如图黑色的是一维数组红色的是二维数组一维数组用来存数据二维数组用来存一维数组 解决方案二: JAVA中一维数组和二维数组的定义一维数组及二维数组的用法java中arraylist和一维数组二维数组的转换 解决方案三: 一楼正解,一维和二维的区别就是线和面的区别,一维的数组你就可以通过一个下标来准确定位,而二维的就需要有两个就像坐标系一样,一维

php怎么循环以下二维数组

问题描述 php怎么循环以下二维数组 以前做java的,现在改行做php,菜鸟级别,想问大神一个问题,请大神指导, 我现在从配置文件中读取一个以下形式的二维数组: array1[0] = "c1":array1[1]="c2";array1[2]="c3"; array2[0]= "d1":array2[1]="d2" ;array2[2]="d3";array2[3]="d4

string-C#一维数组存入二维数组的其中一维

问题描述 C#一维数组存入二维数组的其中一维 我定义 int num=20000; string[,] str2=new str[20,num]; for(int i=0;i<20;i++) { string[] str1=new str1[num]; str1=GetData(i); //一维数组是动态变化中,我随时提取 <<?这里该怎么写,我要将str1放入str2[i, ]中,就是将20个一维数组组合成了二维数组,请求大神帮忙 } 解决方案 一维数组与二维数组黑马程序员-一维数组和

c-用for循环输入二维数组的时候,第一组数为什么为0?

问题描述 用for循环输入二维数组的时候,第一组数为什么为0? 代码如下 #include int main() { void paixu(float food[100][2], int N); float M,total = 0; int N,j,i; while (scanf("%f%d", &M, &N)&&M != -1 && N != -1) { float food[100][2] = { 0 }; for (i = 0; i

PHP实现一维数组转二维数组的方法_php技巧

本文实例讲述了PHP实现一维数组转二维数组的方法.分享给大家供大家参考.具体实现方法如下: <?php $asr[1] = array("a","b","c","d"); $asr[2] = array("a","b","c","d"); $asr[3] = array("a","b","c&