天天站长

 找回密码
 用户注册
查看: 212893|回复: 10

一个用ASP生成html的新方法

[复制链接]

19

主题

2

听众

3万

积分

管理员

Awidc Inc

Rank: 9Rank: 9Rank: 9

UID
1
积分
38006
威望
2461
金币
13355
贡献
1014
活跃
121
魅力
1
注册时间
2007-3-18

贴图大师奖 论坛鼓励奖 聊天天才奖 论坛卫士奖 最佳宣传奖

发表于 2007-3-22 18:52:59 |显示全部楼层
一个用ASP生成html的新方法


目前已经有很多生成html的新闻系统,但是都是用的模板,本函数实现把asp页面产生的html代码保存成为一个html文件,这样就没有必要改动原来的页面就可以轻松完成一个生成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
  希望这个函数对大家有点用,由于水平有限,有错的地方请大家指出,并希望能加以改进。

19

主题

2

听众

3万

积分

管理员

Awidc Inc

Rank: 9Rank: 9Rank: 9

UID
1
积分
38006
威望
2461
金币
13355
贡献
1014
活跃
121
魅力
1
注册时间
2007-3-18

贴图大师奖 论坛鼓励奖 聊天天才奖 论坛卫士奖 最佳宣传奖

发表于 2007-4-7 20:56:36 |显示全部楼层
首页ASP页面生成HTML的方法把虚线以下的部分复制到一个文件中并另存为sheng.asp,上传到空间根目录,可以通过下列方式访问:

bbs.13925.com/sheng.asp

生成就可以了

------------------------------------------------------------------
<%ds="../../"%>
<title>首页生成静态页面</title>
<meta http-equiv="Content-Language" content="zh-cn">
<LINK href=../css/style.css rel=stylesheet type="text/css">
</head>
<body>
<table width="100%" border="0" align=center cellpadding="2"  cellspacing="1" class="tableBorder">
<form action="sheng.asp?type=make" method="post">
    <tr>
      <th height=25 class="tableHeaderText">首页生成静态页面</th>
    </tr>
    <tr>
      <td height=25 class="huiby">请填写asp文件路径:
      <input type="text" name="oname" value="index.asp"></td>
    </tr>
    <tr>
      <td class="amrow">请填写静态文件名:
      <input type="text" name="nname" value="index.htm"> <input type="submit" value="生成静态页面"></td>
    </tr>
</form>
</table>
</body>
</html>
<%
Function GetPage(url)
dim Retrieval
Set Retrieval = CreateObject("Microsoft.XMLHTTP")
With Retrieval
.Open "Get", url, False ', "", ""
.Send
GetPage = BytesToBstr(.ResponseBody)
End With
Set Retrieval = Nothing
End Function


Function BytesToBstr(body)
dim objstream
set objstream = Server.CreateObject("adodb.stream")
objstream.Type = 1
objstream.Mode =3
objstream.Open
objstream.Write body
objstream.Position = 0
objstream.Type = 2
objstream.Charset = "GB2312"
BytesToBstr = objstream.ReadText
objstream.Close
set objstream = nothing
End Function

if request.querystring("type")="make" then
CPage=Request.form("oname")
CHtml=Request.form("nname")
if Cpage="" then
  response.write "<span style=""color:red"">请填写asp文件名</span>"
  response.end
end if
if instr(CPage,"http://")>0 then
   Url=CPage
else
   Url="http://"&Request.ServerVariables("SERVER_NAME")&"/"&CPage
end if
response.write"<br><br>"&Url&""
response.write "<br>开始更新"&CHtml&"..."
wstr = GetPage(Url)

Set fso=Server.CreateObject("Scripting.FileSystemObject")
If (fso.FileExists(server.MapPath(CHtml))) Then
  fso.DeleteFile(server.MapPath(CHtml))
End If
Set CrFi=fso.CreateTextFile(server.MapPath(CHtml))
Crfi.Writeline(wstr)
set CrFi=nothing
set fso=nothing
response.write "<br><font color=red>更新完成!</font>"
response.write "<br>更新时间:"&Now()
response.write"<br><a href="""&CHtml&""" target=""_blank"">"&CHtml&"</a>"
end if
%>
回复

使用道具 举报

0

主题

0

听众

56

积分

初级会员

Rank: 1

UID
5642
积分
56
威望
5
金币
9
贡献
0
活跃
0
魅力
0
注册时间
2007-5-11
发表于 2007-5-11 10:45:42 |显示全部楼层
不过的一个构思~~

不过现在我大多数是采用缓存的方法
回复

使用道具 举报

0

主题

0

听众

6

积分

初级会员

Rank: 1

UID
31117
积分
6
威望
0
金币
0
贡献
0
活跃
0
魅力
0
注册时间
2007-11-25
发表于 2007-11-25 11:01:01 |显示全部楼层
不过现在我大多数是采用缓存的方法
回复

使用道具 举报

5

主题

0

听众

91

积分

初级会员

Rank: 1

UID
58045
积分
91
威望
0
金币
57
贡献
0
活跃
5
魅力
1
注册时间
2011-5-6
发表于 2011-5-8 15:53:51 |显示全部楼层
不错url=http://www.dufalu.net]皮具加盟品牌[/url]
回复

使用道具 举报

5

主题

0

听众

91

积分

初级会员

Rank: 1

UID
58045
积分
91
威望
0
金币
57
贡献
0
活跃
5
魅力
1
注册时间
2011-5-6
发表于 2011-5-8 15:55:07 |显示全部楼层
回复

使用道具 举报

3

主题

0

听众

390

积分

高级会员

Rank: 3Rank: 3

UID
58521
积分
390
威望
0
金币
208
贡献
0
活跃
37
魅力
1
注册时间
2011-11-10
发表于 2012-4-19 09:42:43 |显示全部楼层

@@

分享的真的很不错,恩恩,一定会支持的。
回复

使用道具 举报

7

主题

0

听众

123

积分

中级会员

Rank: 2

UID
59385
积分
123
威望
0
金币
72
贡献
0
活跃
12
魅力
1
注册时间
2012-7-31
发表于 2012-8-2 16:04:44 |显示全部楼层
真的看不懂啊
冷柜  冰柜  商用冷柜   蛋糕柜   http://www.dydq928.com/
回复

使用道具 举报

0

主题

0

听众

99

积分

初级会员

Rank: 1

UID
59467
积分
99
威望
0
金币
59
贡献
0
活跃
6
魅力
1
注册时间
2012-8-24
发表于 2012-8-27 10:10:50 |显示全部楼层
有意思  支持
http://xz.zhcoo.com
http://nb.zhcoo.com
http://fz.zhcoo.com/
http://yz.zhcoo.com
回复

使用道具 举报

1

主题

0

听众

73

积分

初级会员

Rank: 1

UID
59442
积分
73
威望
0
金币
38
贡献
0
活跃
8
魅力
1
注册时间
2012-8-16
发表于 2012-8-30 10:13:29 |显示全部楼层
谢谢楼主分享了!
招商快车http://www.zskche.com
淘金创业网http://www.cy5.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 用户注册


|申请友情链接|关于我们|商家合作|广告报价|联系我们|法律声明|隐私条款|无图浏览|手机浏览|  


敬请您尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其它各项有关法律法规。

本网所有帖子均来源网友上传,本站未进行任何修改和未获取任何利益,且仅代表作者本人意见,不代表本网站立场。

天天站长 技术支持:杭州桐庐家园网络技术有限公司 广告合作:13968063988 在线QQ:18118865

Copyright ©2003-2012 Powered by 安网数据 All Rights Reserved. 备案信息:浙B2-20060153号