ASP 编译源码生成静态的问题

来源:百度知道 编辑:UC知道 时间:2024/07/08 05:09:22
下面这些代码 麻烦大虾们给小弟解释下是什么意思

<%
if SaveFile("news.html","http://localhost/news.asp") then
Response.write "ASP生成静态页面已经成功了!"
else
Response.write "对不起,失败!没有生成"
end if
function SaveFile(LocalFileName,RemoteFileUrl)
Dim Ads, Retrieval, GetRemoteData
On Error Resume Next
Set Retrieval = Server.CreateObject("Microso" & "ft.XM" & "LHTTP")
With Retrieval
.Open "Get", RemoteFileUrl, False, "", ""
.Send
GetRemoteData = .ResponseBody
End With
Set Retrieval = Nothing
Set Ads = Server.CreateObject("Ado" & "db.Str" & "eam")
With Ads
.Type = 1
.Open
.Write GetRemoteData
.SaveToFile Server.MapPath(LocalFileName), 2
.Cancel()

一楼的正解,但不全,若news.asp页是一个列表,那只替换3就不行了,下面是用正则替换,保准一个不留的替换

<%
GetRemoteData = .ResponseBody
GetRemoteData=&RegReplace(GetRemoteData,"news/$1.html","news.asp\?id=(\d)",True,True)

'函数名:RegReplace(str,s,r,i,g)
'参 数:str,要匹配的字符串;s表示要替换的字符串;r表示正则表达式;i表示是否区分大小写;g表示是否全局匹配
'作 用:在字符串str中替换字符串r(正则规则)为s
Function RegReplace(str,s,r,i,g)
Dim Reg
Set Reg=New RegExp
Reg.IgnoreCase=i'默认值为False(区分大小写)
Reg.Global=g'默认值为False(只匹配一次)
Reg.Pattern=r
RegReplace=Reg.Replace(str,s)
Set Reg=Nothing
End Function
%>

GetRemoteData = .ResponseBody
==>
GetRemoteData = Replace(.ResponseBody.,"news.asp?id=3","news/3.html")