Home All Groups Group Topic Archive Search About

page title in a list of recently updated pages



Author
19 Apr 2006 7:44 PM
nospam@plasticlegs.com
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>"
%>

Author
19 Apr 2006 9:22 PM
Mike Brind
nospam@plasticlegs.com wrote:
Show quote
> 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
Author
20 Apr 2006 7:24 PM
nospam@plasticlegs.com
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?
Author
20 Apr 2006 7:46 PM
Mike Brind
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/default.asp?url=/library/en-us/dnclinic/html/scripting051099.asp

--
Mike Brind
Author
20 Apr 2006 7:51 PM
Evertjan.
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)
Author
20 Apr 2006 8:13 PM
nospam@plasticlegs.com
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!

AddThis Social Bookmark Button