ASP生成html的新方法

  由于代码比较短,这里就不进行注释了

  

复制代码 代码如下:

  <%

  '当目标页面的包含文件即#include的页面里边存在response.End()的时候本程序有问题

  '注意:本文件一定要放在20041227111723.htm指向的文件的同一目录下

  dim hughchiu_rtcode

  Function get_exe_code(20041227111723.htm)

  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(20041227111723.htm))

  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(20041227111723.htm)

  dim code

  code = replace( replace( replace( get_exe_code(20041227111723.htm), "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