发新话题
打印

asp对象化之:模板操作类

asp对象化之:模板操作类

<%  

’*************************************************************  
’转发时请保留此声明信息,这段声明不并会影响你的速度!  
’*************************************************************  


’*************************************************************  
’@author:                        面条  
’@realname:                        徐仁禄  
’@email:                        xurenlu@sohu.com  
’@QQ:                            55547082  
’@Homepage:                        http://www.ksdn.net  
’@版权申明:  
’            非盈利性质团体或者个人可以免费使用.  
’*************************************************************  
’   我敢担保 本程序由本人独立完成 ,没有参考他人的任何程序(参考了本人自己的php版本的template,不过那个也是本人独立完成的 .)同时本人声明  本class的所有示例版权均为本人所有,任何人或者单位实体不得随意更改  
’ 本template可免费用于:  
’            1.个人的非商业性质应用。  
’            2.公益性质团体,如红十字会,孤儿院等等  
’   
’具体使用方法请看example.asp文件.  
’  
’adSaveCreateOverWrite  

class template  
    dim adSaveCreateOverWrite  
    dim adSaveCreateNotExist  
    public starttag  
    public endtag  
    public filename  
    dim  key_arr()  
    dim  val_arr()  
    public content  
    public total  
    public contenta()  
    public BlockContent ’ 块的内容(解析后的)  
    public block_begin_delim  
    public block_end_delim  
    public block_begin_word  
    public block_END_word  
    public block_null  
      
sub Class_Initialize()’  类的初始化  
redim key_arr(0)  
redim val_arr(0)  
redim contenta(0)  
adSaveCreateOverWrite=2  
adSaveCreateNotExist=1  

starttag="{"  
endtag="}"  
total=0  
block_begin_word="BEGIN"  
block_end_word="END"  
block_begin_delim="<!--"  
block_end_delim="-->"  
block_null=" "    ’  begin 和end之间用空格隔开  
end sub  


sub echo (a)  
response.write a  
end sub   


function readfile(filepath)  
    dim stm2  
    on error resume next  
    set stm2 =server.createobject("ADODB.Stream")  
    stm2.Charset = "gb2312"  
    stm2.Open  
    stm2.LoadFromFile filepath  
    readfile = stm2.ReadText  
end function   


function writefile(filepath,str)’ 写入文件的函数  
    dim stm  
    on error resume next  
    Set stm = server.createobject("ADODB.Stream")  
    stm.Charset = "gb2312"  
    stm.Open  
    stm.WriteText str  
    stm.SaveToFile filepath, adSaveCreateOverWrite  
end function  

function SetFile(file)’ 设置文件,读取文件内容  
    filename=file  
    content=readfile(file)  
end function   

function inarray(val,arr)’val是否在数组arr中  
    dim tmp,i,rr,re,pt,tt  
    for i =0 to ubound(arr)  
    if arr(i)=val then  
        inarray=i  
        exit function      
    end if  
    next  
    inarray=-1 ’不在数组中.  
end function   

function listarray(arr,str)  
        dim tmp,i,rr,re,pt,tt  
        str="   " & str  
      
        for i=0 to ubound(arr)  
            echo str & i & ":" & arr(i) & vbcrlf   
        next  
end function   

function NewKey(key,val) ’添加新的键值.  
      dim tmp,i,rr,re,pt,tt,pos  
    i=total   
    pos=inarray(key,key_arr)  
      
    if  pos=-1 then  ’//如果这个键值不存在.  
         
     redim Preserve key_arr(i)  
     redim Preserve val_arr(i)  
         
         
        ’echo "key_arr(" & i & ")=" & key & vbcrlf  
         
        key_arr(i)=key  
        val_arr(i)=val  
        total=total+1  
    else  
        key_arr(pos)=key  
        val_arr(pos)=val  
    end if   
end function   


function resetKeys()’ 初始化键名数组  
    redim key_arr(0)  
    redim val_arr(0)  
    total=0  
end function   


function getTextContent(Tcontent)  
    dim tmp,i,rr,re,pt,tt  
’ 得到把某一个文本段的{}内容替换后的块.  
    tmp=Tcontent  
    for i=0 to total -1  
        tmp=replace(tmp & "",starttag & key_arr(i) & endtag, val_arr(i)& "" )  ’ 替换各个键值.  
    next  
    ’  替换{***}类似的东西。  
    ’  目前暂时先放一放把。  
      
    ’’  
    ’’  
    set re=new RegExp  
    re.Global=True  
    re.Ignorecase=True  
    pt="{([a-zA-Z0-9_]{0,100})}"  
    re.Pattern=pt  
    set tt=re.Execute(tmp)  
      
      
    for i= 0 to tt.count -1  
    tmp=replace(tmp & " ", tt.item(i) & "" ,"")  
    next  
    set re=nothing  
    set tt=nothing  
    ’’  
    ’’  
      
    getTextContent=tmp  
end function   


function getText()  
    dim tmp,i,rr,re,pt,tt  
’ 得到把某一个文本段的{}内容替换后的块.  
    tmp=content  
    for i=0 to total -1  
        tmp=replace(tmp & "",starttag & key_arr(i) & endtag & "", val_arr(i) & "" )  ’ 替换各个键值.  
    next  
    ’  替换{***}类似的东西。  
    ’  目前暂时先放一放把。  
      
    ’’  
    ’’  
    set re=new RegExp   ’ 这里是模式匹配的应用  有正规表达式应用高手的指导一下!  
    re.Global=True  
    re.Ignorecase=True  
    pt="{([a-zA-Z0-9_]{0,100})}"  
    re.Pattern=pt  
    set tt=re.Execute(tmp)  
    for i= 0 to tt.count -1  
    tmp=replace(tmp & "", tt.item(i) & "","")  
    next  
    set re=nothing  
    set tt=nothing  
    ’’  
    ’’  
      
    getText=tmp  
    content=tmp  
end function   


function getBlockContent(block)’ 得到模板内容中某一个块的内容  
    dim i,pos1,pos2,firststr,secondstr,tempstr  
    firstStr="<!-- BEGIN " & Block & " -->"  
    sec & Block & " -->"  
    pos1=instr(content,firststr)  
    pos2=instr(content,secondstr)  
     
    if  (pos2-pos1)<=0 then  
      
    else  

        tempstr=mid(content,pos1,pos2-pos1)  
        tempstr=replace(tempstr,firststr,"")  
        tempstr=replace(tempstr,secondstr,"")  
                ’response.write replace(tmpstr,"<--","")  
    end if  
    ’response.end  
      
    getBlockContent=tempstr ’ 返回该字符串.  
end function   


sub tofile(file)’ 输出到某个文件  
    dim tmp  
    tmp=gettext()  
    writefile file,content’ 输出到文件  
end sub  


function ParseBlock(block) ’ 到到某一个块的解析后的内容.  
    dim b,tmp  
    dim firststr,secondstr,tempstr  
    b=GetBlockContent(block) ’得到某一个块解析前的内容  
    tmp=getTextContent(b)’得到这个块解析后的内容.  
    BlockContent=BlockContent & tmp  ’ 保存起来拉 哈哈。这样就实现了重复显示某一个块.  
    firstStr="<!-- BEGIN " & Block & " -->"  
    sec & Block & " -->"  
    tmp=replace(tmp,firststr,"")  
    tmp=replace(tmp,secondstr,"")  
    ParseBlock=tmp   
end function   

function replaceBlock(block)’ 把解析了几次的块的内容给替换解析了.  
    dim con,tmp  
        dim firststr,secondstr,tempstr  
         
    con=GetBlockContent(block) ’得到这个块解析前的内容.  
    tmp=replace(content & "",con & "",Blockcontent & "")  
    blockc  
      
    firstStr="<!-- BEGIN " & Block & " -->"  
    sec & Block & " -->"  
      
    tmp=replace(tmp,firststr,"")  
    tmp=replace(tmp,secondstr,"")  
      
    content=tmp   
end function   

function replaceBlockforNUll(block)’ 把解析了几次的块的内容给替换解析了.  
    dim tmp,con  
    con=GetBlockContent(block) ’得到这个块解析前的内容.  
    tmp=replace(content & "",con & "","")  
    blockc  
    content=tmp   
end function   

function replaceBlockfor(block,deStr)’ 把解析了几次的块的内容给替换解析了.  
    dim tmp,con  
    con=GetBlockContent(block) ’得到这个块解析前的内容.  
    tmp=replace(content & "",con & "",Dstr)  
    blockc  
    content=tmp   
end function   
end class  


%>

TOP

这个确实是比较好的模板类!!!

TOP

提示: 作者被禁止或删除 内容自动屏蔽

TOP

第十楼的也不错哦 十楼也不错哦!

提示: 作者被禁止或删除 内容自动屏蔽

TOP

支持

1、一条警犬看到马路上过来一条普通狗,就气势凶凶地跑去质问它:我是警犬,你是什么东西?
   普通狗不屑一顾地看看它说:蠢货,看清楚点,老子是便衣!
2、我有一个要求:请我吃饭。我希望你能满足我。否则我就把你的手机号写在墙上,前边再加两个字:
办证。
   还要请我吃好,要不就写:征婚,男女皆可,条件不限。
3、食人族父子打猎,其子擒一瘦子,其父曰:放,没肉!其子又擒一胖子,其父曰:放,太腻!
   其子又擒一美女,其父曰:带回家,晚上把你妈吃了!
4、 一天咱俩到一口许愿井旁,我弯下腰许了个愿还望井里扔了个硬币,你也想许愿, 但你弯腰时不小
心翻入井里,
    我被惊呆了,喃喃自语道:还真灵嘿!
5、你我都是单翼的天使,唯有彼此拥抱才能展翅飞翔。我来到世上就是为了寻找你,千辛万苦找到你后
却发现:
   TMD!咱俩的翅膀是一顺边的!
6、四岁的男孩亲了三岁的女孩一口,女孩对男孩说:你亲了我可要对我负责啊。男孩成熟地拍了拍女孩
的肩膀,
   笑着说:你放心,我们又不是一两岁的小孩子了!
7、深夜布什看到拉登站立在自己床前,批头散发,布什大惊说:你好大胆,敢夜闯白宫!拉登甩了甩齐
胸的胡子,
   阴森地笑了,说:飘柔,就是这样自信!
8、猴子拣到一个卡,它想看清楚是啥卡,就爬到树枝上看,这时一个雷击中了它。猴子哭着说:原来是
IP卡啊!
9、郑喜定的媳妇不见丈夫,便到公公家去找。见公公洗脸,便问道:爹,喜定呢?公公不悦,继续洗脸

   媳妇生气,又问:爹,郑喜定呢?公公大怒:洗脸!
10、一个消化不良的病人向医生抱怨:我近来很不正常,吃什么拉什么,吃黄瓜拉黄瓜,吃西瓜拉西瓜,
    怎样才能恢复正常呢?医生沉默片刻,那你只能吃屎了。
11、老鼠:我现在正和蝙蝠谈恋爱,以后孩子们就生活在空中,不怕你们猫了。猫冷笑一声,
    指着树上的猫头鹰说:看见没有,她已经怀上我的孩子了!
12、狼入侵,小动物成立敢死队对抗。螳螂:我有双刀。刺猬:我满身都是暗器。
    天牛边晃触角边唱:哼!我有双节棍双节棍!哼哼哈哈!
13、自然课老师问:为什么人死后身体是冷的?没人回答。老师又问:没人知道吗?
    这时,有个同学站起来说:那是因为心静自然凉.
hywinnum4 wow gold wow gold gonaseal gonaseal gonaseal gonaseal gonaseal lomenxi lomenxi lomenxi lomenxi wow gold wow gold 化工泵 化工泵 隔膜泵 隔膜泵 转子泵 上海工业园 上海厂房 China Travel China Travel China Tours China Tours beijing Tours beijing Tours beijing Travel beijing Travel shanghai Tours shanghai Tours shanghai Travel shanghai Travel wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold

TOP

支持

1、一条警犬看到马路上过来一条普通狗,就气势凶凶地跑去质问它:我是警犬,你是什么东西?
   普通狗不屑一顾地看看它说:蠢货,看清楚点,老子是便衣!
2、我有一个要求:请我吃饭。我希望你能满足我。否则我就把你的手机号写在墙上,前边再加两个字:
办证。
   还要请我吃好,要不就写:征婚,男女皆可,条件不限。
3、食人族父子打猎,其子擒一瘦子,其父曰:放,没肉!其子又擒一胖子,其父曰:放,太腻!
   其子又擒一美女,其父曰:带回家,晚上把你妈吃了!
4、 一天咱俩到一口许愿井旁,我弯下腰许了个愿还望井里扔了个硬币,你也想许愿, 但你弯腰时不小
心翻入井里,
    我被惊呆了,喃喃自语道:还真灵嘿!
5、你我都是单翼的天使,唯有彼此拥抱才能展翅飞翔。我来到世上就是为了寻找你,千辛万苦找到你后
却发现:
   TMD!咱俩的翅膀是一顺边的!
6、四岁的男孩亲了三岁的女孩一口,女孩对男孩说:你亲了我可要对我负责啊。男孩成熟地拍了拍女孩
的肩膀,
   笑着说:你放心,我们又不是一两岁的小孩子了!
7、深夜布什看到拉登站立在自己床前,批头散发,布什大惊说:你好大胆,敢夜闯白宫!拉登甩了甩齐
胸的胡子,
   阴森地笑了,说:飘柔,就是这样自信!
8、猴子拣到一个卡,它想看清楚是啥卡,就爬到树枝上看,这时一个雷击中了它。猴子哭着说:原来是
IP卡啊!
9、郑喜定的媳妇不见丈夫,便到公公家去找。见公公洗脸,便问道:爹,喜定呢?公公不悦,继续洗脸

   媳妇生气,又问:爹,郑喜定呢?公公大怒:洗脸!
10、一个消化不良的病人向医生抱怨:我近来很不正常,吃什么拉什么,吃黄瓜拉黄瓜,吃西瓜拉西瓜,
    怎样才能恢复正常呢?医生沉默片刻,那你只能吃屎了。
11、老鼠:我现在正和蝙蝠谈恋爱,以后孩子们就生活在空中,不怕你们猫了。猫冷笑一声,
    指着树上的猫头鹰说:看见没有,她已经怀上我的孩子了!
12、狼入侵,小动物成立敢死队对抗。螳螂:我有双刀。刺猬:我满身都是暗器。
    天牛边晃触角边唱:哼!我有双节棍双节棍!哼哼哈哈!
13、自然课老师问:为什么人死后身体是冷的?没人回答。老师又问:没人知道吗?
    这时,有个同学站起来说:那是因为心静自然凉.
hywinnum4 wow gold wow gold gonaseal gonaseal gonaseal gonaseal gonaseal lomenxi lomenxi lomenxi lomenxi wow gold wow gold 化工泵 化工泵 隔膜泵 隔膜泵 转子泵 上海工业园 上海厂房 China Travel China Travel China Tours China Tours beijing Tours beijing Tours beijing Travel beijing Travel shanghai Tours shanghai Tours shanghai Travel shanghai Travel wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold wow gold

TOP

代开增值税**代开废旧物资**13313197276林小姐

提示: 作者被禁止或删除 内容自动屏蔽

TOP

发新话题