• ----:)欢迎访问源码网(:----
    • 首页
    • 博客
    • 学院
    • 下载
    • 论坛
    • 影视
    • 发布源码
    • RSS
    • ITPig
    • 笑话网
    • 百家姓
    • 繁體中文

源码网 - 中国第一源码门户
选择镜像:网通镜像 - 电信主站
  • 首 页
  • 新闻动态
  • 网站运营
  • 网页制作
  • WEB开发
  • 编程开发
  • 图像媒体
  • 操作系统
  • 数据库
  • 服务器
热门搜索 优化 SEO 故事 cms IIS7 MySQL 个人 AdSense 主题推广 | 文章搜索: 高级搜索
会员登录/控制面版您的位置: 学院首页 >> WEB开发 >> ASP开发 >> ASP应用 >> 详细内容
 

推荐文章

 
 

热点文章

  • ASP计算汉字笔画程序代码
  • 身份证查询的ASP版Ajax服务器端,不需要数据库支持
  • ASP入门教程(留言板)
  • ASP小偷程序的原理
  • 用文本+ASP打造新闻发布系统/图片上传
  • 超级留言本制作实例
  • ASP实现的日历,可以根据需要在日期上添加任何的操作
  • 利用ADODB.Stream使用浏览器下载服务器文件
  • Asp深度揭密
  • t0nsha's留言板代码
  • 无组件上传图片到数据库中,最完整解决方案
  • ASP操作Excel技术总结
 
 

相关文章

  • 国内ASP应用,不容乐观
  • 用ASP创建多栏选项列表
  • 用户状态维护
  • ASP3.0中的流控制能力
  • session的几个问题
  • 分页显示的例子(显示记录背景色替换变化)
  • 编写ASP时用JScript好还是用VBScript好?
  • 域名登记查询(whois)很复杂吗
  • LINE9的目录浏览源程序
  • 谈谈对于ASP+ PDC bits的经验
  • 浅析数据完整性问题
  • 下载文件的代码
 
 

百度搜索

 
 

一个仿phplib的模板类

  • 阅览次数:
  • 文章来源: 网海之贝
  • 原文作者: 佚名
  • 整理日期: 2006-10-03
  • 发表评论
  • 字体大小:
  • 小
  • 中
  • 大

用php用惯了,用phplib用惯了,没有他觉得很不舒服
上网查找没有人写,自己写了一个,asp水平不高,希望
能有高手指点修改。
<%
' ====================================
' Name:        Template Class
' Purpose:    Parse and output HTML page
' Date:        10.2002
' Author:    pig
' Email:    pigzjq@sina.com
' Phone:    13910320759
' ====================================

class Template
    dim gs_root
    dim gs_handle()
    dim gs_file()
    dim gs_keys()
    dim gs_keyVars()
    dim gs_vars()

    '构造函数
    Private Sub Template_Initialize()
        call of_setRoot(".")
        'call of_redimVar()
    End Sub
   
    function of_redimVar()
        redim gs_handle(0)
        redim gs_file(0)
        redim gs_keys(0)
        redim gs_keyVars(0)
        redim gs_vars(0)
    end function

    '设置模板存放路径
    function of_setRoot(byVal ps_root)
        if ps_root <> "" then
            gs_root = ps_root
        end if
    end function

    '设置文件名称函数
    function of_setFile(byVal ps_fileHandle,byVal ps_fileName)
        if ps_fileName <> "" then
            li_maxNum=UBound(gs_handle)
            gs_handle(li_maxNum)    = ps_fileHandle
            gs_file(li_maxNum)        = gs_root+"/"+ps_fileName

            li_maxNum=li_maxNum+1
            redim Preserve gs_handle(li_maxNum)
            redim Preserve gs_file(li_maxNum)
        end if
    end function

    '设置要替换的参数变量
    function of_setVar(byVal ps_key,byVal ps_var)
        if ps_key <> "" and ps_var <> "" then
            li_keyIndex=of_getIndex(gs_keys,ps_key)
            if li_keyIndex="no" then
                li_maxNum=UBound(gs_keys)
                gs_keys(li_maxNum)=ps_key
                gs_keyVars(li_maxNum)="{" & ps_key & "}"
                gs_vars(li_maxNum)=ps_var
               
                li_maxNum=li_maxNum+1
                redim Preserve gs_keys(li_maxNum)
                redim Preserve gs_keyVars(li_maxNum)
                redim Preserve gs_vars(li_maxNum)
            else
                gs_keys(li_keyIndex)=ps_key
                gs_keyVars(li_keyIndex)="{" & ps_key & "}"
                gs_vars(li_keyIndex)=ps_var
            end if
        end if
    end function

    '定义重载文字块儿
    function of_setBlock(byVal ps_parent,byVal ps_handle,byVal ps_name)
        if (not of_loadFile(ps_parent)) then
            ls_error="of_loadFile unable to load "+ps_parent
            response.write(ls_error)
            of_setBlock=false
            exit function
        end if

        if ps_name="" then
            ps_name=ps_handle
        end if

        ls_string=of_getVar(ps_parent)
        ls_pattern = "<!--s*BEGIN "&ps_handle&"s*-->(.*)<!--s*END "&ps_handle&"s*-->"

        Set regEx = New RegExp
        regEx.Pattern = "n"
        regEx.IgnoreCase = false
        regEx.global = true
        ls_string = regEx.Replace(ls_string,"")

        regEx.Pattern = ls_pattern
        regEx.Multiline = true
        regEx.global = false
        Set Matches = regEx.Execute(ls_string)
        ls_string = regEx.Replace(ls_string,"{"&ps_name&"}")

        For Each Match in Matches   
            ls_value=Match.value
        Next

        regEx.Pattern = "<!--s*BEGIN "&ps_handle&"s*-->"
        regEx.IgnoreCase = false
        regEx.global = true
        ls_value = regEx.Replace(ls_value,"")

        regEx.Pattern = "<!--s*END "&ps_handle&"s*-->"
        regEx.IgnoreCase = false
        regEx.global = true
        ls_value = regEx.Replace(ls_value,"")

        call of_setVar(ps_handle,ls_value)
        call of_setVar(ps_parent,ls_string)
    end function

    '装载变量内容
    function of_loadFile(byVal ps_handle)
        li_keyIndex=of_getIndex(gs_keys,ps_handle)
        if li_keyIndex = "no" then
            li_fileIndex=of_getIndex(gs_handle,ps_handle)
            if li_fileIndex = "no" then
                ls_error="loadfile:"+ps_handle+" is not a valid handle."
                response.write(ls_error)
                of_loadFile=false
                exit function
            end if

            ls_fileName=gs_file(li_fileIndex)
            ls_fileName=server.mappath(ls_fileName)
            Set MyFileObject=Server.CreateObject("Scripting.FileSystemObject")
            li_exist=MyFileObject.FileExists(ls_fileName)
            if li_exist then
                Set MyTextFile=MyFileObject.OpenTextFile(ls_fileName)
                ls_file=MyTextFile.readAll()
                MyTextFile.Close
                call of_setVar(ps_handle,ls_file)
            else
                ls_error="loadfile:"+ls_fileName+" is not a valid file or path."
                response.write(ls_error)
                of_loadFile=false
                exit function
            end if
        end if

        of_loadFile=true
    end function

    '变量替换过程
    function of_replace(byval ps_handle)
        if (not of_loadFile(ps_handle)) then
            ls_error="of_replace: unable to load "+ps_handle
            response.write(ls_error)
            of_replace=false
            exit function
        end if

        ls_str=of_getVar(ps_handle)
        li_minIndex=LBound(gs_keys)
        li_maxIndex=UBound(gs_keys)
        
        for i=li_minIndex to li_maxIndex
            Set regEx = New RegExp
            regEx.Pattern = gs_keyVars(i)
            regEx.IgnoreCase = True
            ls_str = regEx.Replace(ls_str, gs_vars(i))
        next

        of_replace=ls_str
    end function
   
    '获取存储变量
    function of_getVar(byval ps_keyName)
        li_keyIndex=of_getIndex(gs_keys,ps_keyName)
        if(li_keyIndex="no") then
            of_getVar=""
        else
            ls_varName=gs_vars(li_keyIndex)
            of_getVar=ls_varName
        end if
    end function

    '查找数组中相应字符串的索引值
    function of_getIndex(byval ps_array,byval ps_handle)
        li_minIndex=LBound(ps_array)
        li_maxIndex=UBound(ps_array)
        li_index="no"
        for i=li_minIndex to li_maxIndex
            if (ps_array(i)=ps_handle) then
                li_index=i
                exit for
            end if
        next
        of_getIndex=li_index
    end function

    '分析变量
    function of_parse(byval ps_target,byval ps_handle,byval ps_append)
        ls_string = of_replace(ps_handle)
        if ps_append=true then
            ls_org = of_getVar(ps_target) & ls_string

            'if pi_time=2 then
            '    response.write(ls_string)
            '    exit function
            'end if

            call of_setVar(ps_target,ls_org)
        else
            call of_setVar(ps_target,ls_string)
        end if
    end function
   
    function of_print(byval ps_keyName)
        li_keyIndex=of_getIndex(gs_keys,ps_keyName)
        ls_varString=gs_vars(li_keyIndex)

        Set regEx = New RegExp
        regEx.Pattern = "{[^ trn}]+}"
        regEx.IgnoreCase = True
        ls_varString = regEx.Replace(ls_varString, "")
        of_print=ls_varString
    end function
end class
%>

调用页面:
<%
dim c_html
set c_html = new Template

call c_html.of_redimVar()
call c_html.of_setFile("main","index.htm")
call c_html.of_setBlock("main","block_test","myTest")

call c_html.of_setVar("TEST","testblock1")
call c_html.of_parse("myTest","block_test",true)
call c_html.of_setVar("TEST","testblock2")
call c_html.of_parse("myTest","block_test",true)

call c_html.of_setVar("TEST1","success")
call c_html.of_parse("MAIN_OUTPUT","main",false)
ls_result=c_html.of_print("MAIN_OUTPUT")
response.write(ls_result)
%>

模板文件:
{TEST1}
<table border=1>
<!-- BEGIN block_test -->      
<tr><td width='250' class='h1' height='40' bgcolor='#f0f0f0' align='center'>
    {TEST}
</td></tr>
<!-- END block_test -->
</table>

希望对用惯了phplib中的强大功能的朋友能有所帮助
我希望交接所有php以及asp的爱好者
我的qq:9457009

上一篇:Asp深度揭密
下一篇:构建支持Master/Slave读写分离的数据库操作类
  • 网友评论:
  • 查看所有评论
  • 我要发表评论
您的网名:
留言主题:
你要发表的内容:

 

关于本站 | 广告联系 | 版权声明 | 网站地图 | 发布软件 | 帮助中心 | 源码论坛

Copyright © 2005-2007 CodePub.Com  程序支持:木翼  滇ICP备05005971号