Avatar billede royal12 Nybegynder
23. juni 2003 - 21:46 Der er 6 kommentarer og
1 løsning

Hive links ud af en HTML-side

Hejsa

Hvordan hiver jeg ALLE links ud af en html side. Jeg har funde noget kode som kan hive dem ud der starter med "http" men den hiver ikke resten ud som f.eks:

<a href="images/test.jpg">
<a href=images/test.jpg>
<a href="../biler/biler.asp">
<a href=../biler/biler.asp>
<a href="/biler/">
..

og alle de andre mere eller mindre pæne måder at lave links.

er der nogen der kan hjælpe mig med det??

Mvh
Royal
Avatar billede royal12 Nybegynder
23. juni 2003 - 21:47 #1
her er den kode jeg har fundet:

Public Sub StripURL(FilePath As String)
Dim tmpURL1, tmpURL2 As String

Open FilePath For Input As #1
Do Until EOF(1)
    Input #1, tmpURL1
    For X = 1 To Len(tmpURL1)
        tmpURL2 = Mid(tmpURL1, X, 7)
        If tmpURL2 = "http://" Then
            St1 = X
            tmpY = X
                For Y = 1 To Len(tmpURL1)
                    tmpURL2 = Mid(tmpURL1, tmpY, 1)
                        If tmpURL2 = Chr(34) Then
                            St2 = tmpY
                            lstURL.AddItem Mid(tmpURL1, St1, ((St2 - St1)))
                            Exit For
                        Else
                            tmpY = tmpY + 1
                        End If
                Next Y
        End If
    Next X
   
Loop

Close #1
Avatar billede martin_moth Mester
23. juni 2003 - 22:18 #2
Du kan da bare søge på <a href= i stedet for på http://
Avatar billede martin_moth Mester
06. juli 2003 - 17:47 #3
royal12..?
Avatar billede royal12 Nybegynder
07. juli 2003 - 09:11 #4
hmm..sorry...
Avatar billede martin_moth Mester
07. juli 2003 - 09:45 #5
Hvis du har problemer med at forstå koden, skal jeg gerne forsøge at hjælpe :o)
Tak for points
Avatar billede martin_moth Mester
07. juli 2003 - 09:57 #6
Og vil du forbedre koden en anelse, så brug Freefile i stedet for #1 :o)

Og så vidt jeg kan se, kan du undgå at loope over Y, men i stedet loope over tmpY, så du omskriver fra:


tmpY = X
For Y = 1 To Len(tmpURL1)
  tmpURL2 = Mid(tmpURL1, tmpY, 1)
  If tmpURL2 = Chr(34) Then
    St2 = tmpY
    lstURL.AddItem Mid(tmpURL1, St1, ((St2 - St1)))
    Exit For
  Else
    tmpY = tmpY + 1
  End If
Next Y


til


For tmpY = X To Len(tmpURL1-X)
  tmpURL2 = Mid(tmpURL1, tmpY, 1)
  If tmpURL2 = Chr(34) Then
    St2 = tmpY
    lstURL.AddItem Mid(tmpURL1, St1, ((St2 - St1)))
    Exit For
  End If
Next tmpY

Det er lidt simplere, og du sparer en variabel...

I øvrigt har du vel bemærket, at koden IKKE virker hvis et link deler sig over flere linier?
Avatar billede martin_moth Mester
07. juli 2003 - 09:59 #7
Lidt simplere endnu - du behøver hverken variablem Y eller St2:

For tmpY = X To Len(tmpURL1-X)
  tmpURL2 = Mid(tmpURL1, tmpY, 1)
  If tmpURL2 = Chr(34) Then
    lstURL.AddItem Mid(tmpURL1, St1, ((tmpY - St1)))
    Exit For
  End If
Next tmpY

Og så gider jeg ikke forsøge at optimere mere :o)
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

Seneste spørgsmål Seneste aktivitet
I går 10:21 Ny printer, men hvilken Af mort1 i Printere
13/0819:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging