• 网络学院
  • 新手学堂
  • 操作系统
  • 网络技术
  • 软件应用
  • 办公软件
  • 编程技术
  • 网站架设
  • 数据库类
  • 平面设计
  • 多媒体类
  • 游戏资讯
  • 教学论文
  • 认证考试
一个仿phplib的模板类
广告位
  站点:
  • 首 页
  • 最新软件
  • 最新文章
  • 国内软件
  • 国外软件
  • 汉化软件
  • 源码下载
  • 字体下载
一个仿phplib的模板类
软件发布 一个仿phplib的模板类
网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 行业软件 游戏娱乐 编程开发 安全相关 教育教学 数码软件
热门软件: QQ 瑞星 pplive e话通 木马克星 千千静听 office2000 五笔字根 Photoshop 视频分割
返回首页 | 文章首页 | 编程技术 | ASP & ASP.NET教程 | 一个仿phplib的模板类

一个仿phplib的模板类

 

添加时间: 2006-5-7 3:25:37  作者: ASP教程  阅读次数:119   来源: http://d9soft.com

 

 

        用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 = "{[^ \t\r\n}]+}"
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

 

 

 

上下文章:

 

上一篇文章: NextRecordset 和 GetRows 双簧合奏 下一篇文章: 判断Cookies是否处于开启状态

相关文章:

  • 编写一个接受变量的存储过程
  • 如何确认数据库是否处在一个安全平台上
  • 9i中一个特殊等待事件--null event
  • Function怎么返回一个数据集?
  • Oracle中一个日期查找的误区

相关软件:

  • 一个新闻小偷
  • 七盏灯(一个古埃及游戏) V1.0

 

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • ASP源码
  • PHP源码
  • Net源码
  • JSP 源码

编程技术分类导航

  • ASP & ASP.NET教程
  • PHP教程
  • JSP教程
  • C/C++教程
  • VB & VB.NET教程
  • VC教程
  • Delphi教程
  • BCB教程
  • VFP教程
  • PB教程
  • JAVA教程
  • XML教程
  • C#教程
  • CGI教程

本类经典文章推荐

  • 九阳神功 ASP.NET技术的学习顺序
  • 在ASP与ASP.NET之间共享对话状态(...
  • 17种正则表达式
  • 关闭窗口时保存数据的办法
  • 一个新的JMail(4.3版本)发送代码
  • 一个很简单的验证码程序
  • 用正则解析图片地址,并利用XMLHTT...
  • 利用ASP+JMAIL进行邮件群发的新思...
  • ASP操作Excel技术总结
  • MD5算法研究(2)

ASP & ASP.NET教程阅读排行

  • 用纯ASP代码实现图片上传
  • ASP数据库简单操作教程
  • aspjpeg组件高级使用方法介绍
  • 一个拷贝整个文件夹(包括子文件夹...
  • 利用ASP技术实现文件直接上传功能
  • 几例在ASP存储过程的使用方法
  • 一个很简单的验证码程序
  • 创建一个ASP通用分页类(一)
  • ASP操作Excel技术总结
  • 一个新的JMail(4.3版本)发送代码

编程技术阅读总排行

  • VB入门教程之一
  • 第二章 PowerBuilder 入门之创建新...
  • Java连接数据库实例
  • 第一章 什么是PowerBuilder
  • VC++之List Box/Check List Box控...
  • VC++ List Ctrl控件
  • VC++ Combo Box/Combo Box Ex控件
  • 学C++不得不看的一篇文章
  • VB入门教程之二
  • VC++之Button控件

广告位置

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 回到顶部

关于我们 | 版权声明 | 免责条款 | 广告联系 | 软件发布 | 下载帮助 | 下载排行 | 网站地图 | 特别鸣谢 | 友情连接

copyright; 2005-2008 D9soft.com 第九软件网 版权所有