|
it
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
page title in a list of recently updated pages
I'm using VBScript to display a list of the ten most recently updated pages on my web site. Right now, the script lists the filenames and the date modified in a given directory. What I want to know is if there is any way to extract the page title and display that instead of the file name? Can I use .asp and VBscript to "delve" into the file and extract the title? Here's the code I'm using: <% folder = ".\" set fso = CreateObject("Scripting.fileSystemObject") set fold = fso.getFolder(Server.MapPath(folder)) fileCount = fold.files.count dim fNames(), fDates() redim fNames(fileCount), fDates(fileCount) cFcount = 0 for each file in fold.files cFcount = cFcount + 1 fNames(cFcount) = lcase(file.name) fDates(cFcount) = file.dateLastModified next for tName = 1 to fileCount for nName = (tName + 1) to fileCount if (fDates(tName) < fDates(nName)) then buffer = fNames(nName) dateBuffer = fDates(nName) fNames(nName) = fNames(tName) fDates(nName) = fDates(tName) fNames(tName) = buffer fDates(tName) = dateBuffer end if next next if (fileCount > 10) then fileCount = 10 End If Response.Write "<table border=1 width='90%'>" for i = 1 to fileCount Response.Write "<tr><td><a href='" & fNames(i) & "'>" & fNames(i) & "</a></td><td>" & fDates(i) & "</td></tr>" next Response.Write "</table>" %> nospam@plasticlegs.com wrote:
Show quote > Hi there, Yes. You can use the Scripting.FileSystemObject to read the contents> > I'm using VBScript to display a list of the ten most recently updated > pages on my web site. Right now, the script lists the filenames and > the date modified in a given directory. > > What I want to know is if there is any way to extract the page title > and display that instead of the file name? Can I use .asp and VBscript > to "delve" into the file and extract the title? > > Here's the code I'm using: > <% > folder = ".\" > set fso = CreateObject("Scripting.fileSystemObject") > set fold = fso.getFolder(Server.MapPath(folder)) > fileCount = fold.files.count > dim fNames(), fDates() > redim fNames(fileCount), fDates(fileCount) > cFcount = 0 > for each file in fold.files > cFcount = cFcount + 1 > fNames(cFcount) = lcase(file.name) > fDates(cFcount) = file.dateLastModified > next > for tName = 1 to fileCount > for nName = (tName + 1) to fileCount > if (fDates(tName) < fDates(nName)) then > buffer = fNames(nName) > dateBuffer = fDates(nName) > fNames(nName) = fNames(tName) > fDates(nName) = fDates(tName) > fNames(tName) = buffer > fDates(tName) = dateBuffer > end if > next > next > if (fileCount > 10) then > fileCount = 10 > End If > Response.Write "<table border=1 width='90%'>" > for i = 1 to fileCount > Response.Write "<tr><td><a href='" & fNames(i) & "'>" & > fNames(i) & "</a></td><td>" & fDates(i) & "</td></tr>" > next > Response.Write "</table>" > %> of an asp file, and then a regular expression to get the title. Here's one that opens a file in the same folder and finds the title. It assumes that you will only have letters, numbers or spaces in the title: <% Dim objFSO, objTextStream, strSearchOn, objMatch, colmatches, mymatch Dim strFileName Set objFSO = Server.CreateObject("Scripting.FileSystemObject") strFileName = Server.Mappath("filename.asp") const fsoForReading = 1 Set objTextStream = objFSO.OpenTextFile(strFileName, fsoForReading) strSearchOn = objTextStream.ReadAll Set objRegExpr = New regexp objRegExpr.Pattern = "<title>[\w\d\s]*<" objRegExpr.Global = True objRegExpr.IgnoreCase = True set colmatches = objRegExpr.Execute(strSearchOn) For Each objMatch in colMatches mymatch = replace(objMatch.Value,"<title>","") mymatch = replace(mymatch,"<","") Next Response.Write mymatch objTextStream.Close Set objTextStream = Nothing Set objFSO = Nothing %> -- Mike Brind Thanks Mike! I was able to insert that script into my code to give me
exactly what I want! One last thing - is there any way to allow dashes in the title? nospam@plasticlegs.com wrote:
> Thanks Mike! I was able to insert that script into my code to give me Yes. Add \- to the pattern within the square brackets, so the line> exactly what I want! One last thing - is there any way to allow dashes > in the title? should read: objRegExpr.Pattern = "<title>[\w\d\s\-]*<" Hyphens/Dashes need to be escaped with a backslash because it's one of the special characters. The pattern above first looks for the text <title>, followed by any word character or digit or whitespace or dash appearing 0 or more times before an opened angle bracket. If you find you need to add more options (double colons :: seem to be the rave with some people), have a look at this article: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnclinic/html/scripting051099.asp -- Mike Brind Mike Brind wrote on 20 apr 2006 in microsoft.public.inetserver.asp.general:
> Yes. Add \- to the pattern within the square brackets, so the line Why not more general:> should read: > > objRegExpr.Pattern = "<title>[\w\d\s\-]*<" > "<title>[^<]*<" ? -- Evertjan. The Netherlands. (Please change the x'es to dots in my emailaddress) |
|||||||||||||||||||||||