.Write """ & str & """" includeconvert = code End Function Function include(filename) Dim re, content, fso, f, aspStart, aspEnd, code Set fso=CreateObject("scripting.FileSystemObject") Set f=fso.OpenTextFile(Server.MapPath(filename)) content=f.ReadAll f.close Set f=nothing Set fso=nothing code = "" aspEnd=1 aspStart=InStr(aspEnd,content,"<%")+2 Set re=new RegExp Do While aspStart>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.Write str % > 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)) Set re=nothing include = code End Function
方便起见,以上函数最终返回的是整合了包含文件的整个 ASP 代码,使用时还要再用 Execute 执行之,即使用时需要:Execute(include("file.asp"))。
以上函数对被包含文件与主文件同一路径时测试通过,未对被包含文件与主文件路径不同的情况做进一步容错,时间有限,欢迎有兴趣的朋友提出意见和改进。
上一页 [1] [2] [3]
|