|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
缺乏可以共同遵循的行业标准,ASP还处在发展初期,大家对它的理解不同,如产品和服务标准,收费标准等,不利于行业的健康发展。静态ASP自己不撑持静态包括文件,如今的静态包括是经由过程FSO把被包括的文件兼并到主文件里再运转。以下也有把形如<!--#includefile="filename.asp"-->的一般包括文件体例称作“传统援用”,用函数完成的静态包括文件称作“静态援用”。罕见的程序以下:
Functioninclude(filename)
Dimre,content,fso,f,aspStart,aspEnd
setfso=CreateObject("Scripting.FileSystemObject")
setf=fso.OpenTextFile(server.mappath(filename))
content=f.ReadAll
f.close
setf=nothing
setfso=nothing
setre=newRegExp
re.pattern="^s*="
aspEnd=1
aspStart=inStr(aspEnd,content,"<%")+2
dowhileaspStart>aspEnd+1
Response.writeMid(content,aspEnd,aspStart-aspEnd-2)
aspEnd=inStr(aspStart,content,"%>")+2
Execute(re.replace(Mid(content,aspStart,aspEnd-aspStart-2),"Response.Write"))
aspStart=inStr(aspEnd,content,"<%")+2
loop
Response.writeMid(content,aspEnd)
setre=nothing
EndFunction
利用典范:include("youinc.asp")
以上典范引自
但这处函数在处置补包括的文件中另有包括文件时就不灵了。我在以上函数的基本上改善出来以下函数,在被包括文件中另有一般的包括文件<!--#includefile="filename.asp"-->也可一般运转。
Functionincludeconvert(oRegExp,strFilename,strBlock)
DimincStart,incEnd,match,oMatches,str,code
用提取ASP代码的不异体例提掏出include部分的文件名,其他部分原样输入
code=""
incEnd=1
incStart=InStr(incEnd,strBlock,"<!--#include")+13要找个方针字符串<!--#include恰好是13个字符,以是要+13
DoWhileincStart>incEnd+12两个援用间距最小就是一连的--><--#,incStart是从<!--#include起数13个字符,以是要比前一个incEnd要最少多13-1失掉的>incEnd+12的前提
str=Mid(strBlock,incEnd,incStart-incEnd-13)
str=Replace(str,"""","""""")把单个双引号换成两个双引号
str=Replace(str,VbCr,"")
str=Replace(str,VbLf,"")
str=Replace(str,VbCrLf,"")
code=code&VbCrLf&"Response.Write"""&str&""""
incEnd=InStr(incStart,strBlock,"-->")+3
oRegExp.pattern="(w+)=""([^""]+)"""婚配file="filename.ext"或virtual="virtualname.ext",捕获范例及文件名两个子串
SetoMatches=oRegExp.Execute(Mid(strBlock,incStart,incEnd-incStart-3))
Setmatch=oMatches(0)断定只要一组捕获时,要失掉这一组婚配的子串,能够如许做,省往用ForEachmatchInoMatches……Next
code=code&include(Mid(strFilename,1,InStrRev(strFilename,"/"))&match.SubMatches(1))Mid(filename,1,InStrRev(filename,"/"))是在被援用的子文件名有路径时,把路径提掏出来,加在子文件中传统援用的文件名后面,以找到准确的翻开文件路径,由于静态援用时的文件路径是绝对主文件而言的。要第二个婚配子串用SubMatches(1)
incStart=InStr(incEnd,strBlock,"<!--#include")+13
Loop
str=Mid(strBlock,incEnd)
str=Replace(str,"""","""""")把单个双引号换成两个双引号
str=Replace(str,VbCr,"")
str=Replace(str,VbLf,"")
str=Replace(str,VbCrLf,"")
code=code&VbCrLf&"Response.Write"""&str&""""
includeconvert=code
EndFunction
Functioninclude(filename)
Dimre,content,fso,f,aspStart,aspEnd,code
Setfso=CreateObject("scripting.FileSystemObject")
Setf=fso.OpenTextFile(Server.MapPath(filename))
content=f.ReadAll
f.close
Setf=nothing
Setfso=nothing
code=""
aspEnd=1
aspStart=InStr(aspEnd,content,"<%")+2
Setre=newRegExp
DoWhileaspStart>aspEnd+1
传统援用<!--#inclde一定是在ASP代码段之外的,以是先转。
code=code&includeconvert(re,filename,Mid(content,aspEnd,aspStart-aspEnd-2))
aspEnd=InStr(aspStart,content,"%>")+2
re.pattern="^s*="这段正则交换本来是把<%=str%>换回成尺度的<%Response.Writestr%>
code=code&VbCrLf&re.replace(Mid(content,aspStart,aspEnd-aspStart-2),"Response.Write")ASP块后面再加回车换行,以免毗连块之间多个Response.Write在统一行的毛病
aspStart=InStr(aspEnd,content,"<%")+2
Loop
code=code&includeconvert(re,filename,Mid(content,aspEnd))
Setre=nothing
include=code
EndFunction
<p>便利起见,以上函数终极前往的是整合了包括文件的全部ASP代码,利用时还要再用Execute实行之,即便用时必要:Execute(include("file.asp"))。ASP最大的缺点在于网络的安全性和可靠性,企业将经营数据放在开放的平台上,最大的担忧就是如何保证这些数据不被其他人破坏。 |
|