选择显示字体大小

一个仿phplib的模板类

     用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
  
  
    


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons