IIS ASP - page title in a list of recently updated pages

This is Interesting: Free IT Magazines  
Home > Archive > IIS ASP > April 2006 > page title in a list of recently updated pages





You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

Author page title in a list of recently updated pages
nospam@plasticlegs.com

2006-04-27, 7:52 am

Hi there,

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>"
%>

Mike Brind

2006-04-27, 7:52 am


nospam@plasticlegs.com wrote:
> Hi there,
>
> 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>"
> %>


Yes. You can use the Scripting.FileSystemObject to read the contents
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

nospam@plasticlegs.com

2006-04-27, 7:52 am

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?

Mike Brind

2006-04-27, 7:52 am


nospam@plasticlegs.com wrote:
> 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?


Yes. Add \- to the pattern within the square brackets, so the line
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/d...pting051099.asp

--
Mike Brind

Evertjan.

2006-04-27, 7:52 am

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
> should read:
>
> objRegExpr.Pattern = "<title>[\w\d\s\-]*<"
>


Why not more general:

"<title>[^<]*<"

?

--
Evertjan.
The Netherlands.
(Please change the x'es to dots in my emailaddress)
nospam@plasticlegs.com

2006-04-27, 7:52 am

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?

Oops, never mind, I just solved it:

Replace
objRegExpr.Pattern = "<title>[\w\d\s]*<"

With
objRegExpr.Pattern = "<title>[\w\d\s\x2D]*<"

Thanks again!

Sponsored Links






Free braindumps | Software forum | Database administration forum

Copyright 2003 - 2008 webservertalk.com