一个用ASP生成html的新方法

目前已经有很多生成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

希望这个函数对大家有点用,由于水平有限,有错的地方请大家指出,并希望能加以改进。

Published At
Categories with Web编程
Tagged with
comments powered by Disqus