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则不能实例化。

相关文章