下面代码可以全部复制粘贴到一个search.asp文件中,就能够实现静态页面的全文检索功能了。适合于页面数较少的站点,估计超过100个页面性能就很差了。
<
%
Head = " 站内搜索 "
SearchString = Request( " SearchString " )
count = 0
' 把当前目录的实际路径转换为虚拟路径
Function UnMapPath( Path )
UnMapPath = Replace ( Mid (Path, Len (Server.MapPath( " / " )) + 1 ), " " , " / " )
End Function
Function SearchFile( f, s, title )
Set fo = fs.OpenTextFile(f)
content = fo.ReadAll
fo.Close
SearchFile = InStr ( 1 , content, S, vbTextCompare) > 0
If SearchFile Then
pos1 = InStr ( 1 , content, " <TITLE> " , vbTextCompare)
pos2 = InStr ( 1 , content, " </TITLE> " , vbTextCompare)
title = ""
If pos1 > 0 And pos2 > 0 Then
title = Mid ( content, pos1 + 7 , pos2 - pos1 - 7 )
End If
End If
End Function
Function FileLink( f, title )
vPath = UnMapPath( f.Path )
If title = "" Then title = f.Name
FileLink = " <A HREF="" " & vPath & " ""> " & title & " </A> "
FileLink = " <UL>· " & FileLink & " </UL> "
End Function
Sub SearchFolder( fd, s )
found = False
For each f In fd.Files
pos = InStrRev (f.Path, " . " )
If pos > 0 Then
ext = Mid (f.Path, pos + 1 )
Else
ext = ""
End If
If LCase (ext) = " htm " Then
If SearchFile( f, s, title ) Then
Response.Write FileLink(f, title)
count = count + 1
' Response.Write cstr(count)
End If
End If
Next
For each sfd In fd.SubFolders
SearchFolder sfd, s
Next
End Sub
% >
< html >
< head >
< meta http - equiv = " Content-Type " content = " text/html; charset=gb_2312-80 " >
< title >< % = Head% ></ title >
</ head >
< body bgcolor = " #FFFFFF " >
< h1 >< % = Head% ></ h1 >
< hr >
< ! -- 注意search.asp为本文件,可根据需要修改! -->
< form action = " search.asp " method = " Get " >
< p > 请输入欲搜索的内容: < input type = " text "
size = " 20 " name = " SearchString " value = " <%=SearchString%> " > < input
type = " submit " value = " 搜索 " > </ p >
</ form >
< %
Set fs = Server.CreateObject( " Scripting.FileSystemObject " )
Set fd = fs.GetFolder( Server.MapPath( " ./ " ) ) ' 设置开始搜索的路径(将遍历其所有子目录,当前设置为search.asp所在目录)!
If SearchString <> "" Then
Response.Write " <H2>搜索<font color=red> " & SearchString & " </font>结果如下:</H2><P> "
SearchFolder fd,SearchString
End If
% >
< hr >
</ body >
</ html >
Head = " 站内搜索 "
SearchString = Request( " SearchString " )
count = 0
' 把当前目录的实际路径转换为虚拟路径
Function UnMapPath( Path )
UnMapPath = Replace ( Mid (Path, Len (Server.MapPath( " / " )) + 1 ), " " , " / " )
End Function
Function SearchFile( f, s, title )
Set fo = fs.OpenTextFile(f)
content = fo.ReadAll
fo.Close
SearchFile = InStr ( 1 , content, S, vbTextCompare) > 0
If SearchFile Then
pos1 = InStr ( 1 , content, " <TITLE> " , vbTextCompare)
pos2 = InStr ( 1 , content, " </TITLE> " , vbTextCompare)
title = ""
If pos1 > 0 And pos2 > 0 Then
title = Mid ( content, pos1 + 7 , pos2 - pos1 - 7 )
End If
End If
End Function
Function FileLink( f, title )
vPath = UnMapPath( f.Path )
If title = "" Then title = f.Name
FileLink = " <A HREF="" " & vPath & " ""> " & title & " </A> "
FileLink = " <UL>· " & FileLink & " </UL> "
End Function
Sub SearchFolder( fd, s )
found = False
For each f In fd.Files
pos = InStrRev (f.Path, " . " )
If pos > 0 Then
ext = Mid (f.Path, pos + 1 )
Else
ext = ""
End If
If LCase (ext) = " htm " Then
If SearchFile( f, s, title ) Then
Response.Write FileLink(f, title)
count = count + 1
' Response.Write cstr(count)
End If
End If
Next
For each sfd In fd.SubFolders
SearchFolder sfd, s
Next
End Sub
% >
< html >
< head >
< meta http - equiv = " Content-Type " content = " text/html; charset=gb_2312-80 " >
< title >< % = Head% ></ title >
</ head >
< body bgcolor = " #FFFFFF " >
< h1 >< % = Head% ></ h1 >
< hr >
< ! -- 注意search.asp为本文件,可根据需要修改! -->
< form action = " search.asp " method = " Get " >
< p > 请输入欲搜索的内容: < input type = " text "
size = " 20 " name = " SearchString " value = " <%=SearchString%> " > < input
type = " submit " value = " 搜索 " > </ p >
</ form >
< %
Set fs = Server.CreateObject( " Scripting.FileSystemObject " )
Set fd = fs.GetFolder( Server.MapPath( " ./ " ) ) ' 设置开始搜索的路径(将遍历其所有子目录,当前设置为search.asp所在目录)!
If SearchString <> "" Then
Response.Write " <H2>搜索<font color=red> " & SearchString & " </font>结果如下:</H2><P> "
SearchFolder fd,SearchString
End If
% >
< hr >
</ body >
</ html >