<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      一個仿phplib的模板類

      [摘要]用php用慣了,用phplib用慣了,沒有他覺得很不舒服上網查找沒有人寫,自己寫了一個,asp水平不高,希望能有高手指點修改。<%' =========================...
      用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





      日韩精品一区二区三区高清