Avatar billede weiland Nybegynder
23. december 2002 - 21:21 Der er 12 kommentarer og
1 løsning

Søgning og strengmanipulering

En en lang html-fil har jeg en en række img-tags, der typisk ser sådan ud:
<IMG align=baseline src="C:\Inetpub\wwwroot\warning.gif">

Kan jeg ud fra denne html-fil få en liste over de billeder, der indgår i filen?
Altså fx "C:\Inetpub\wwwroot\warning.gif"

Det er altså en proces i to trin. Først finder man img-tagsene, derefter strengmanipulerer man sig frem til billedets sti- og filnavn.
Avatar billede burningice Nybegynder
24. december 2002 - 00:08 #1
ser dit tag ALTID sådan ud: "<IMG align=baseline src=..." ? så kan du jo gøre noget i den her retning:

intStart = InStr(string, "<IMG")
intSlut = InStr(intStart, string, ">")
strBillede = Mid(string, intStart+22, Len(string)-intSlut)

dette finder det første billede (forhåbenligt... ellers skal der bare tilrettes lidt med tallene), og så kan du lave en for-løkke der finder de resterende img tags, og det tilhørende billede...
Avatar billede burningice Nybegynder
24. december 2002 - 00:12 #2
ups... Len(string)-intSlut skal vist ved nærmere eftertanke være intSlut-(intStart+22))


hvis dit img tag ikke altid ser sådan ud, men src'en altid er det sidste property kan du gøre noget i den her retning

intStart = InStr(string, "<IMG")
intStart = InStr(intStart, string, "src")
intSlut = InStr(intStart, string, ">")
strBillede = Mid(string, intStart+22, intSlut-(intStart+22))
Avatar billede weiland Nybegynder
24. december 2002 - 09:46 #3
Det virker rockergodt! Kan du SÅ se at give et svar, så jeg kan give point... :-)
Kan du give et lillebitte hint til, hvordan jeg laver for-løkken?
Avatar billede weiland Nybegynder
24. december 2002 - 09:54 #4
Jeg synes i øvrigt, at jeg også skylder dig 100 points for http://www.eksperten.dk/spm/297192 !
Avatar billede burningice Nybegynder
24. december 2002 - 11:46 #5
Mon ikke det her burde kunne gøre det?

intStart = InStr(string,"<IMG")
If intStart > 0 Then
    intStart = InStr(intStart, string, "src")
    intSlut = InStr(intStart, string, ">")
    strBillede = strBillede & Mid(string, intStart+22, intSlut-(intStart+22)) &"<br"
        Count = 1
    Do While intStart > 0
        intStart = InStr(intStart+1,strTekst,"<IMG")
        intSlut = InStr(intStart, string, ">")
        strBillede = strBillede & Mid(string, intStart+22, intSlut-(intStart+22)) &"<br"
        Count = Count +1
    Loop
    Response.Write "der blev fundet "& Count &" billeder"
Else
Response.Write "Der var ikke noget billede"
End If

Det der sker er at vi aller først tjekker om der overhovedet er noget billede. Hvis der er det skriver vi det ud, og sætter count til 0. Når det er gjort laver jeg en loop, som kører så længe der findes et billede, og i denne linje
intStart = InStr(intStart+1,strTekst,"<IMG")
sørger jeg for at gå 1 bogstav frem for hver gang, ellers vil vi jo få fat i det samme billede hver gang.
Avatar billede burningice Nybegynder
24. december 2002 - 11:46 #6
det var det svar ;)

Glædelig jul
Avatar billede weiland Nybegynder
25. december 2002 - 11:43 #7
Stort :-) ... og godt nytår!
Avatar billede burningice Nybegynder
25. december 2002 - 14:15 #8
tak for det, og i lige måde :)
Avatar billede weiland Nybegynder
26. december 2002 - 16:11 #9
Nu har jeg i praksis afprøvet loopet, og uanset hvad jeg prøver, så får jeg følgende fejlmeddelelse:

Invalid procedure call or argument: 'InStr'

- og meddelelsen peger på

intSlut = InStr(intStart, streng, ">") som synderen.....

Hvad kan være galt?
Avatar billede burningice Nybegynder
26. december 2002 - 19:42 #10
der manglede et lille tjek på intStart... det virker nu

http://www.burningice.dk/sjov/findpictures.asp

<%
str = "adsfsdæf <img baseline=""hej"" src=""test.jpg"">asdsdfsd<img src=""asdf.jpg"">sdfsdf<img src=""hej.gif"">"

intStart = InStr(str,"<img")
If intStart > 0 Then
    intStart = InStr(intStart, str, "src")
    intSlut = InStr(intStart, str, ">")
    strBillede = strBillede & Mid(str, intStart+5, intSlut-(intStart+6)) &"<br>"
    Count = 1

    Do While intStart > 0
    intStart = InStr(intStart, str, "<img")
    If intStart > 0 Then
        intStart = InStr(intStart, str, "src")
            intSlut = InStr(intStart, str, ">")
            strBillede = strBillede & Mid(str, intStart+5, intSlut-(intStart+6)) &"<br>"
            Count = Count + 1
    Else
        Exit Do
    End If
    Loop

    Response.Write "Der blev fundet "& Count &" billede(r)<br>"& strBillede
    Response.Write "String: "& str
Else
Response.Write "Der var ikke noget billede"
End If
%>
Avatar billede burningice Nybegynder
26. december 2002 - 20:01 #11
... og en lidt smartere måde at gøre det på... en lille funktion der kalder sig selv

<%
str = "adsfsdæf <img baseline=""hej"" src=""test.jpg"">asdsdfsd<img src=""asdf.jpg"">sdfsdf<img src=""hej.gif"">"

intStart = InStr(str,"<img")
If intStart > 0 Then
    intStart = InStr(intStart, str, "src")
    intSlut = InStr(intStart, str, ">")
    strBillede = strBillede & Mid(str, intStart+5, intSlut-(intStart+6)) &"<br>"
    Count = 1

    Do While intStart > 0
    intStart = InStr(intStart, str, "<img")
    If intStart > 0 Then
        intStart = InStr(intStart, str, "src")
            intSlut = InStr(intStart, str, ">")
            strBillede = strBillede & Mid(str, intStart+5, intSlut-(intStart+6)) &"<br>"
            Count = Count + 1
    Else
        Exit Do
    End If
    Loop

    Response.Write "Der blev fundet "& Count &" billede(r)<br>"& strBillede
    Response.Write "String: "& str
Else
Response.Write "Der var ikke noget billede"
End If
%>
Avatar billede burningice Nybegynder
26. december 2002 - 20:06 #12
det går godt... NOT... her er den


Function FindPictures(str, start)
intStart = InStr(start, str,"<img")
If intStart > 0 Then
    intStart = InStr(intStart, str, "src")
    intSlut = InStr(intStart, str, ">")
    Response.Write Mid(str, intStart+5, intSlut-(intStart+6)) &"<br>"
    Count = Count + 1
    FindPictures str, intSlut
End If
End Function

FindPictures str, 1
Avatar billede weiland Nybegynder
27. december 2002 - 09:56 #13
Tusind tak... Nu spiller det!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester