הדוגמא הבא מקבל מחרוזת לחיפוש ומחזירה את כותרת כל דף ודף בו נמצאה המחרוזת. החיפוש מתבצע בצורה רקורסיבית בכדי שיעבור בכל התת תקיות ויחפש גם בתוכן
קודם כל נראה את הקוד מקור ולאחר מכן אנסה להסביר:
<%
if not isempty(request("term")) then' האם להציג תוצאות חיפוש?
SFolder = "C:\Inetpub\wwwroot\" ' ספריית השורש לחיפוש
rootURL = "http://localhost/" 'ספרית השורש לכתובת
noTerm = "tournode1.html searchfiles.html " 'קבצים בהם לא יחופש
function makeURL(path1)
temp = replace(path1, Sfolder, rootURL)
temp = replace(temp, "\", "/")
makeURL = temp
end function
Term = lcase(request("term"))
sub RecS(ByVal folder, ByRef StrT, ByRef Count)
Set fs = CreateObject("Scripting.FileSystemObject")
set dir = fs.GetFolder(folder)
set Flist = dir.files
' שלוש השורות שלמעלה כוללות הגדרת מערכת קבצים ותקייה
for each file in Flist 'חיפוש בתוך התקייה, לולאה המתבצעת עבור כלחיפוש בתוך התקייה
if (right(lcase(File.name), 5) = ".html" or right(lcase(File.name),4) = ".htm")
and (instr(noTerm, lcase(File.name))= 0) then
' מתקיים אם הקובץ הוא קובץ היפרטקסט שאינו מוגדר כקובץ בו לא יערך חיפוש
path = folder & "\"& lcase(File.name)' מגדיר את נתיב הקובץ
'response.write path & " "
set t = fs.opentextfile(path)
Fc = lcase(t.readall)' פותח את הקובץ לקריאה
t.close
if instr(Fc, term) > 0 then' בודק את הימצאות מונח החיפוש
count = count +1
Tpos = instr(1,Fc,"")+1
Epos = instr(Tpos,Fc,"")
if Tpos > 0 and Epos > 0 then' מחפש את כותרת הדף
Tpos = Tpos+7
Epos = Epos - Tpos
title = mid(fc, Tpos, Epos)
else
Title = file.name
end if
found = found & ""& Title &"" &"|"
end if
end if
next
set Flist = nothing
set Dlist = dir.SubFolders
StrT = found & strT
for each subdir in Dlist' לולאה המתבצעת עבור כל התת תיקיות
recS folder & "\" & subdir.name, strT, Count
'הפרוצדורה קוראת לעצמה, הפעם עם נתיב של תת תיקייה, במקום התיקייה הראשית
next
end sub
str= ""
sum = 0' הגדרת המשתנים שיועברו לפרוצדורה, הראשון הוא מחרוזה החיפוש והשני הוא מספר התוצאות
RecS Sfolder, str, sum' קריאה לפונקציה
response.write sum & " Pages found."
response.write " "
response.write replace(str, "|", " ")
end if
%>
כאן יש טופס פשוט הקולט מחרוזת לחיפוש
השורות הבאות קובעות את נתיבי החיפוש: SFolder = "C:\Inetpub\wwwroot\"
rootURL = "http://localhost/"
noTerm = "tournode1.html searchfiles.html "
בגלל חוסר תאימות בין מערכת הספריות של חלונות לבין יש למפות את ההבדלים: המחרוזת העליונה מציגה את הנתיב הפיסי לחיפוש (ניתן להשתמש לצורך זה בפקודה Server.MapPath("שם הקובץ")) המחרוזת התחתונה מציגה את הנתיב בפורמט וירטואלי
הפונקציה שלמטה מחליפה את שתי הכתובות:
function makeURL(path1)
temp = replace(path1, Sfolder, rootURL)
temp = replace(temp, "\", "/")
makeURL = temp
end function
שימו לב! לפני שמפעילים את הקובץ אצלכם במחשב יש לשנות את שורות 12,13,14 שיתאימו לתיקיות בהן ברצונכם לחפש. (לא מומלץ לתת למחשב לעבוד קשה מידי ולהכנס להרבה ספריות)
|