一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - ASP教程 - 分享一個好東東,動態(tài)Include文件 (Dynamic File Includes)

分享一個好東東,動態(tài)Include文件 (Dynamic File Includes)

2019-09-27 09:12asp開發(fā)網(wǎng) ASP教程

相信很多ASP開發(fā)者都會抱怨ASP的Include方式太老土了,以的方式加載文件實(shí)在是太不舒服了,在實(shí)際項(xiàng)目中不管我是不是一開始就要用到這個文件,我總得早早的把它Include進(jìn)來...這方面PHP就舒服很多...什么時候用,什么時候In...

早在03年就在藍(lán)色理想上看到過動態(tài)Include的文章,當(dāng)時已經(jīng)覺得很厲害,但實(shí)際應(yīng)用了一下,不方便而且Include的效果不好. 

后來又在一網(wǎng)站上看到了改進(jìn)版的,但是也不太好用~~~ 

哎,當(dāng)時我真是覺得有點(diǎn)想放棄ASP了,但是由于公司還是用ASP來開發(fā),我也是沒有辦法... 

今天,我一定要記住今天~~~在國外的一個網(wǎng)站上我竟然發(fā)現(xiàn)了這樣一個好東東,太棒了~~~Great works!!! 

以前試的一些動態(tài)Include代碼,都無法Include一個類,甚至函數(shù)~~~又或者Include文件中的Include無法被包含... 

現(xiàn)在這個鬼佬(dselkirk)寫的類可以為我們做到這些了~~~

復(fù)制代碼代碼如下:


<%  
  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  
%>

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 禁止的爱善良的未删减版hd | 黑人干我 | 欧美成人精品福利在线视频 | 欧美日韩中文国产一区二区三区 | wwwav视频 | 果冻传媒i91media免费 | 视频网站入口在线看 | 精品无人区乱码1区2区3区在线 | 亚洲午夜久久久久久91 | 国产一级特黄aa大片免费 | 亚洲天堂影院 | 歪歪漫画a漫入口 | 99国内精品久久久久久久黑人 | xxxxxx日本处大片免费看 | 午夜久久精品 | 全黄h全肉细节文在线观看 全彩成人18h漫画 | 国产精品视频一区二区三区w | 天天久久综合 | 91这里只有精品 | 成人免费体验区福利云点播 | 国产精品久久久久久久久 | 亚洲国产欧美目韩成人综合 | 亚洲国产在线视频中文字 | 高h生子双性美人受 | 32pao强力打造免费高速高 | 亚洲狼人综合干 | 精品免费tv久久久久久久 | 国产午夜精品一区二区 | 国产精品原创巨作无遮挡 | 亚洲 欧美 在线观看 | 日本激情网站 | 国产探花视频在线观看 | ai换脸杨颖被啪在线观看 | 亚洲高清免费在线观看 | 午夜福利自怕 | 强制高h| 亚洲国内精品 | 91sao在线看片水片 | 国产精品毛片无码 | 精品久久久久中文字幕日本 | 日韩风月片|