|
 
- 帖子
- 9211
- 积分
- 9246
- 贡献
- 61
- 鲜花
- 1
- 臭蛋
- 1
- 来自
- 小地方
- 在线时间
- 3119 小时
- 注册时间
- 2005-1-22

|
地板
发表于 2005-8-1 15:09
| 只看该作者
非摸板生成静态页
目前已经有很多生成html的新闻系统,但是都是用的模板,本函数实现把asp页面产生的html代码保存成为一个html文件,这样就没有必要改动原来的页面就可以轻松完成一个生成html的新闻系统了。^_^
由于代码比较短,这里就不进行注释了
- <%
- '当目标页面的包含文件即#include的页面里边存在response.End()的时候本程序有问题
- '注意:本文件一定要放在filename指向的文件的同一目录下
- dim hughchiu_rtcode
- Function get_exe_code(filename)
- dim execode
- dim tmp_str
- Dim re,re1,content,fso,f,aspStart,aspEnd
- dim ms,m
- execode = ""
- 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.ignorecase = true
- re.global = true
- re.pattern = "\<\%\@[^\%]+\%\>"
- content = re.replace(content,"")
-
- re.global = false
- re.pattern = "\<\!\-\-\s*\#include\s*file\s*=\s*\""([^\""]+)\""\s*\-\-\>"
- do
- set ms = re.execute(content)
- if ms.count<>0 then
- set m = ms(0)
- tmp_str = get_exe_code(m.submatches(0))
- content = re.replace(content, tmp_str)
- else
- exit do
- end if
- loop
- set m = nothing
- set ms = nothing
-
- re.pattern="^\s*="
- aspEnd=1
- aspStart=inStr(aspEnd,content,"<%")+2
-
- set re1=new RegExp
- re1.ignorecase = true
- re1.global = false
- re1.pattern = "response\.Write(.+)"
-
- do while aspStart>aspEnd+1
- execode = execode&vbcrlf&" hughchiu_rtcode = hughchiu_rtcode&"""&replace( replace(Mid(content,aspEnd,aspStart-aspEnd-2),"""",""""""), vbcrlf, """&vbcrlf&""")&""""&vbcrlf
- aspEnd=inStr(aspStart,content,"%\>")+2
- tmp_str = Mid(content,aspStart,aspEnd-aspStart-2)
-
- do
- set ms = re1.execute(tmp_str)
- if ms.count<>0 then
- set m = ms(0)
- tmp_str = re1.replace(tmp_str, " hughchiu_rtcode = hughchiu_rtcode&"&m.submatches(0))
- else
- exit do
- end if
- loop
-
- set m = nothing
- set ms = nothing
-
- execode = execode& re.replace(tmp_str,"hughchiu_rtcode = hughchiu_rtcode&")
- aspStart=inStr(aspEnd,content,"<%")+2
- loop
-
- set re1 = nothing
- set re=nothing
-
- execode = execode&vbcrlf&" hughchiu_rtcode = hughchiu_rtcode&"""&replace( replace(Mid(content,aspEnd), """", """"""), vbcrlf, """&vbcrlf&""" )&""""&vbcrlf
- get_exe_code = "<%"&execode&"%\>"
- End Function
-
- function asp2html(filename)
- dim code
- code = replace( replace( replace( get_exe_code(filename), "hughchiu_rtcode = hughchiu_rtcode&"""""&vbcrlf, "" ), "<%", "" ), "%\>", "" )
- 'response.Write(code)
- execute(code)
- 'response.Write( hughchiu_rtcode )
- asp2html = hughchiu_rtcode
- end function
- %>
复制代码
使用范例:
- set fso=CreateObject("Scripting.FileSystemObject")
- set f=fso.CreateTextFile( server.mappath( "youpage.htm" ), true )
- f.WriteLine( asp2html("youpage.asp") )
- f.close
- set f = nothing
- set fso = nothing
复制代码
可见,虽然是新方法还是需要fso的支持 |
|