目前已经有很多生成html的新闻系统,但是都是用的模板,本函数实现把asp页面产生的html代码保存成为一个html文件,这样就没有必要改动原来的页面就可以轻松完成一个生成html的新闻系统了。^_^
由于代码比较短,这里就不进行注释了
1
2'当目标页面的包含文件即#include的页面里边存在response.End()的时候本程序有问题
3'注意:本文件一定要放在filename指向的文件的同一目录下
4dim hughchiu_rtcode
5Function get_exe_code(filename)
6dim execode
7dim tmp_str
8Dim re,re1,content,fso,f,aspStart,aspEnd
9dim ms,m
10execode = ""
11set fso=CreateObject("Scripting.FileSystemObject")
12set f=fso.OpenTextFile(server.mappath(filename))
13content=f.ReadAll
14f.close
15set f=nothing
16set fso=nothing
17
18set re = new regexp
19re.ignorecase = true
20re.global = true
21re.pattern = "\<\%\@[^\%]+\%\>"
22content = re.replace(content,"")
23
24re.global = false
25re.pattern = "\<\\!\\-\\-\s*\\#include\s*file\s*=\s*\""([^\""]+)\""\s*\\-\\-\>"
26do
27set ms = re.execute(content)
28if ms.count<>0 then
29set m = ms(0)
30tmp_str = get_exe_code(m.submatches(0))
31content = re.replace(content, tmp_str)
32else
33exit do
34end if
35loop
36set m = nothing
37set ms = nothing
38
39re.pattern="^\s*="
40aspEnd=1
41aspStart=inStr(aspEnd,content,"<%")+2
42
43set re1=new RegExp
44re1.ignorecase = true
45re1.global = false
46re1.pattern = "response\\.Write(.+)"
47
48do while aspStart>aspEnd+1
49execode = execode&vbcrlf&" hughchiu_rtcode = hughchiu_rtcode&"""&replace( replace(Mid(content,aspEnd,aspStart-aspEnd-2),"""",""""""), vbcrlf, """&vbcrlf&""")&""""&vbcrlf
50aspEnd=inStr(aspStart,content,"%\>")+2
51tmp_str = Mid(content,aspStart,aspEnd-aspStart-2)
52
53do
54set ms = re1.execute(tmp_str)
55if ms.count<>0 then
56set m = ms(0)
57tmp_str = re1.replace(tmp_str, " hughchiu_rtcode = hughchiu_rtcode&"&m.submatches(0))
58else
59exit do
60end if
61loop
62
63set m = nothing
64set ms = nothing
65
66execode = execode& re.replace(tmp_str,"hughchiu_rtcode = hughchiu_rtcode&")
67
68aspStart=inStr(aspEnd,content,"<%")+2
69loop
70
71set re1 = nothing
72set re=nothing
73
74execode = execode&vbcrlf&" hughchiu_rtcode = hughchiu_rtcode&"""&replace( replace(Mid(content,aspEnd), """", """"""), vbcrlf, """&vbcrlf&""" )&""""&vbcrlf
75get_exe_code = "<%"&execode&"%\>"
76End Function
77
78function asp2html(filename)
79dim code
80code = replace( replace( replace( get_exe_code(filename), "hughchiu_rtcode = hughchiu_rtcode&"""""&vbcrlf, "" ), "<%", "" ), "%\>", "" )
81'response.Write(code)
82execute(code)
83'response.Write( hughchiu_rtcode )
84asp2html = hughchiu_rtcode
85end 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
希望这个函数对大家有点用,由于水平有限,有错的地方请大家指出,并希望能加以改进。