源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

分享一个好东东,动态Include文件 (Dynamic File Includes)

  • 时间:2020-11-10 01:42 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:分享一个好东东,动态Include文件 (Dynamic File Includes)
早在03年就在蓝色理想上看到过动态Include的文章,当时已经觉得很厉害,但实际应用了一下,不方便而且Include的效果不好. 后来又在一网站上看到了改进版的,但是也不太好用~~~ 哎,当时我真是觉得有点想放弃ASP了,但是由于公司还是用ASP来开发,我也是没有办法... 今天,我一定要记住今天~~~在国外的一个网站上我竟然发现了这样一个好东东,太棒了~~~Great works!!! 以前试的一些动态Include代码,都无法Include一个类,甚至函数~~~又或者Include文件中的Include无法被包含... 现在这个鬼佬(dselkirk)写的类可以为我们做到这些了~~~
[u]复制代码[/u] 代码如下:
<%    public include, include_vars    set include = new cls_include    class cls_include      private sub class_initialize()        set include_vars = server.createobject("scripting.dictionary")      end sub      private sub class_deactivate()        arr_variables.removeall        set include_vars = nothing        set include = nothing      end sub      public default function include(byval str_path)        dim str_source        if str_path <> "" then          str_source = readfile(str_path)          if str_source <> "" then            processincludes str_source            convert2code str_source            formatcode str_source            if str_source <> "" then              if request.querystring("debug") = 1 then                response.write str_source                response.end              else                executeglobal str_source                include_vars.removeall              end if            end if          end if        end if      end function      private sub convert2code(str_source)        dim i, str_temp, arr_temp, int_len        if str_source <> "" then          if instr(str_source,"%" & ">") > instr(str_source,"<" & "%") then            str_temp = replace(str_source,"<" & "%","|%")            str_temp = replace(str_temp,"%" & ">","|")            if left(str_temp,1) = "|" then str_temp = right(str_temp,len(str_temp) - 1)            if right(str_temp,1) = "|" then str_temp = left(str_temp,len(str_temp) - 1)            arr_temp = split(str_temp,"|")            int_len = ubound(arr_temp)            if (int_len + 1) > 0 then              for i = 0 to int_len                str_temp = trim(arr_temp(i))                str_temp = replace(str_temp,vbcrlf & vbcrlf,vbcrlf)                if left(str_temp,2) = vbcrlf then str_temp = right(str_temp,len(str_temp) - 2)                if right(str_temp,2) = vbcrlf then str_temp = left(str_temp,len(str_temp) - 2)                if left(str_temp,1) = "%" then                  str_temp = right(str_temp,len(str_temp) - 1)                  if left(str_temp,1) = "=" then                    str_temp = right(str_temp,len(str_temp) - 1)                    str_temp = "response.write " & str_temp                  end if                else                  if str_temp <> "" then                    include_vars.add i, str_temp                    str_temp = "response.write include_vars.item(" & i & ")"                   end if                end if                str_temp = replace(str_temp,chr(34) & chr(34) & " & ","")                str_temp = replace(str_temp," & " & chr(34) & chr(34),"")                if right(str_temp,2) <> vbcrlf then str_temp = str_temp                arr_temp(i) = str_temp              next              str_source = join(arr_temp,vbcrlf)            end if          else            if str_source <> "" then              include_vars.add "var", str_source              str_source = "response.write include_vars.item(""var"")"            end if          end if        end if      end sub      private sub processincludes(str_source)        dim int_start, str_path, str_mid, str_temp        str_source = replace(str_source,"<!-- #","<!--#")        int_start = instr(str_source,"<!--#include")        str_mid = lcase(getbetween(str_source,"<!--#include","-->"))        do until int_start = 0          str_mid = lcase(getbetween(str_source,"<!--","-->"))          int_start = instr(str_mid,"#include")          if int_start >  0 then            str_temp = lcase(getbetween(str_mid,chr(34),chr(34)))            str_temp = trim(str_temp)            str_path = readfile(str_temp)            str_source = replace(str_source,"<!--" & str_mid & "-->",str_path & vbcrlf)          end if          int_start = instr(str_source,"#include")        loop      end sub      private sub formatcode(str_code)        dim i, arr_temp, int_len        str_code = replace(str_code,vbcrlf & vbcrlf,vbcrlf)        if left(str_code,2) = vbcrlf then str_code = right(str_code,len(str_code) - 2)        str_code = trim(str_code)        if instr(str_code,vbcrlf) > 0 then          arr_temp = split(str_code,vbcrlf)          for i = 0 to ubound(arr_temp)            arr_temp(i) = ltrim(arr_temp(i))            if arr_temp(i) <> "" then arr_temp(i) = arr_temp(i) & vbcrlf          next          str_code = join(arr_temp,"")          arr_temp = vbnull        end if      end sub      private function readfile(str_path)        dim objfso, objfile        if str_path <> "" then          if instr(str_path,":") = 0 then str_path = server.mappath(str_path)          set objfso = server.createobject("scripting.filesystemobject")          if objfso.fileexists(str_path) then            set objfile = objfso.opentextfile(str_path, 1, false)            if err.number = 0 then              readfile = objfile.readall              objfile.close            end if            set objfile = nothing          end if          set objfso = nothing        end if      end function      private function getbetween(strdata, strstart, strend)        dim lngstart, lngend        lngstart = instr(strdata, strstart) + len(strstart)        if (lngstart <> 0) then          lngend = instr(lngstart, strdata, strend)          if (lngend <> 0) then            getbetween = mid(strdata, lngstart, lngend - lngstart)          end if        end if      end function    end class  %>
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部