分享
 
 
 

发布一个简单点的ASP摸板类

王朝asp·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

呵呵,其实这个写了都挺久的了,看看里面的日期就知道了,只不过一直不想发布出来,这次在做一个小型的论坛,就把原来自己的的那个复杂的摸板引擎修改了一翻拿来用,因为把ASP代码和HTML代码分离了开来,所以论坛是可以变换风格,在用这个摸板引擎的过程中发现了它功能上还是有点不足,就是在循环标签替换上,不过如果结合数组可以轻松实现的,呵呵,具体用法暂且不说了...等有时间再把教程写出来

<Script Language="vbscript" Runat="Server">

'--------------------------------------

'版权说明:

'Author:西楼冷月

'Date:2005-8-21

'HomeSite: www.xilou.Net |-西楼社区-| // www.chinaCMS.org

'E-Mail:ch_56@163.com

'QQ:39949376 CMS讨论群:11497202

'version:西楼模板引擎V1.0精简版 XILOU-EasyTemplate v1.0

'--------------------------------------

'函数说明:

'Set_Block(BlkName)

'Set_Bvar(TagName,TagValue)

'Prase_Block(BlkName,BlkList)

'Replace_Block(BlkNameList)

'Set_Var(TagName,TagValue)

'Prase_Temp()

'OutPut()

'--------------------------------------

'变量说明:

'Key(),Value(),Num'//--------单标签保存数组

'BKey(),BValue(),BNum'//--------区块内单标签保存数组

'Temp'//----------模板全局变量

'BeginBlockStart,BeginBlockEnd,EndBlockStart,EndBlockEnd'//----------区块标签设置

'VarBegin,VarEnd'//------------单标签设置

'Re,Match,Mathes

'--------------------------------------

'集合说明:

'Block '//保存替换后的区块内容

'Block_List '//取出区块,保存区块内内容

'BlockNC '//取出区块,保存包括区块标签的整个区块内容

'---------------------------------------

On Error Resume Next

Class EasyTemplate

Private Key(),Value(),Num

Private BKey(),BValue(),BNum

public Block,Block_List,BlockNC

Public Temp

Private BeginBlockStart,BeginBlockEnd,EndBlockStart,EndBlockEnd

Private VarBegin,VarEnd

Private Re,Match,Mathes

'--------------------------------------------------------

Private Sub Class_Initialize

'response.write "西楼模板引擎开始了,哈哈!<br>"

set Block =CreateObject("Scripting.Dictionary") '追加内容,更新内容

set Block_List =CreateObject("Scripting.Dictionary") '储存区块内容

set BlockNC =CreateObject("Scripting.Dictionary")'//储存包括区块标签的区块内容

set re=New RegExp

redim Key(20)

redim Value(20)

Num=0

redim BKey(20)

redim BValue(20)

BNum=0

redim PBblockName(20)

BlockNum=0

'------------默认标签模式------------

BeginBlockStart="<beginblock:"

BeginBlockEnd=">"

EndBlockStart="<endblock:"

EndBlockEnd=">"

VarBegin="{Tag:"

VarEnd="}"

End Sub

Private Sub Class_Terminate

set Block=nothing

set Block_List=nothing

set BlockNC=nothing

set re=nothing

Erase Key

Erase Value

Erase BKey

Erase BValue

'response.write "西楼模板引擎结束了!"

End Sub

'-------------------------------------------------------

Public Property Let SetTag(BS,BE,ES,EE,BG,ED)'//--------重新设置标签模式

BeginBlockStart= BS

BeginBlockEnd=BE

EndBlockStart=ES

EndBlockEnd=EE

VarBegin=BG

VarEnd=ED

End Property

'-------------------------------------------------------

Public Sub Set_Var(TagName,TagValue) '单标签解析

dim k

if IsArray(TagName) and IsArray(TagValue) then

for k=LBound(TagName) to Ubound(TagName)

Key(Num)=TagName(k)

Value(Num)=TagValue(k)

Num=Num+1

if UBound(Key)=Num then '如果数组太小则动态分配空间

redim preserve Key(Num+20)

redim preserve Value(Num+20)

end if

next

else

Key(Num)=TagName

Value(Num)=TagValue

Num=Num+1

if UBound(Key)=Num then

redim preserve Key(Num+20)

redim preserve Value(Num+20)

end if

end if

End Sub

Public Sub Prase_Temp()'//------------单标签替换

dim i

for i=LBound(Key) to UBound(Value)

Temp=replace(Temp,VarBegin&Key(i)&VarEnd,Value(i))

next

End Sub

'===============区块解析============================

Public Sub Set_BVar(TagName,TagValue) '区块内单标签解析

dim k

if IsArray(TagName) and IsArray(TagValue) then

for k=LBound(TagName) to Ubound(TagName)

BKey(BNum)=TagName(k)

BValue(BNum)=TagValue(k)

BNum=BNum+1

if UBound(BKey)=BNum then '如果数组太小则动态分配空间

redim preserve BKey(BNum+20)

redim preserve BValue(BNum+20)

end if

next

else

BKey(BNum)=TagName

BValue(BNum)=TagValue

BNum=BNum+1

if UBound(BKey)=BNum then

redim preserve BKey(BNum+20)

redim preserve BValue(BNum+20)

end if

end if

End Sub

Public Sub Set_Block(blkname) '设置区块,取出区块内容

re.Global=true

re.IgnoreCase=true

re.Pattern=BeginBlockStart&blkname&BeginBlockEnd&"([\s\S.]*?)"&EndBlockStart&blkname&EndBlockEnd

set matches=re.Execute(Temp)

BlockNC.Add blkname,matches(0)'//建立整个区块名称和对应的键值

match=matches(0).SubMatches(0)

Block_List.Add blkname,match '//建立区块名称和对应的键值

set matches=nothing

End Sub

Public Sub Prase_Block(BlkName)'//---解析区块

dim Blk_Content,tag,k

Blk_Content=Block_List.Item(BlkName)

k=LBound(BKey)

for each tag in BKey

Blk_Content=replace(Blk_Content,VarBegin&tag&VarEnd,BValue(k))

k=k+1

next

redim BKey(20) '重新声明数组

redim BValue(20)

BNum=0 '初始数变为0

if Block.Exists(BlkName) then '//不重复记录内容

dim m:m=Block.Item(BlkName)

Block.Remove (

[1] [2] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有