ASP中利用execute实现动态包含文件的方法
在asp中include文件形如 #include file=function.asp,这是最简单也是最常用的包含文件方法,青岛星网下面跟大家分享:根据不同的需求,包含不同的文件的函数。
asp动态包含文件的实现函数
function include(filename) dim re,content,fso,f,aspstart,aspend set fso=createobject("scripting.filesystemobject") set f=fso.opentextfile(server.mappath(filename)) content=f.readall f.close set f=nothing set fso=nothing set re=new regexp re.pattern="^\s*=" aspend=1 aspstart=instr(aspend,content,"<%")+2 do while aspstart>aspend+1 response.write mid(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.write mid(content,aspend) set re=nothing end function
其实是写一个动态包含的函数,这样每次调用时候代码简洁,也方便,使用方法:
include("***.asp")'注意,这里的include是函数名哦,不要搞混哦。
下面是其他网友的补充大家参考一下
asp中,include file/virtual 是优先脚本代码处理的,所以无法使用include动态包含asp文件。我们可以使用execute函数动态执行所需代码。
方法:
execute(asp代码)
例子:(vbcrlf为换行符)
execute("class clsabc"&vbcrlf&"public function output"&vbcrlf&"response.write 123"&vbcrlf&"end function"&vbcrlf&"end class")
dim objabc set objabc = new clsabc objabc.output set objabc = nothing
使用时可以用从文件或数据库读取出asp代码再执行,注意,所执行的代码中不应包含<%和%>
注意不要与server.execute混淆,server.execute参数为asp虚拟路径,并且使用该函数不但不能动态声明class类,甚至不可以给主程序段的变量赋值。
例子:
main.asp
dim strabc,objabc strabc = "test" server.execute("sub.asp") response.write strabc set objabc = new clsabc objabc.output set objabc = nothing
sub.asp
strabc = "execute" class clsabc public function output response.write "class" end function end class
执行main.asp后,将仅输出test,而objabc则不能实例化。