Avatar billede kratluskeren Nybegynder
05. marts 2004 - 14:26 Der er 7 kommentarer og
2 løsninger

plukke data ud af streng

Hej
jeg har en variabel der indeholder en masse tekst (html kode).

Jeg vil gerne have en funktioner der leder denne variabel igennem for url'er der overholder en bestemt syntaks.

Dvs.
kære funktion
Udtræk (og udskriv) alle url'er fra teksten der ser således ud:
http://www.tester.dk/test.asp?id=var1&item=var2

hvor var1 og var2 er variable. Dvs der kan stå hvad som helst.
Den ene dag står der måske:
http://www.tester.dk/test.asp?id=23&item=8994
og den næste dag:
http://www.tester.dk/test.asp?id=23&item=89kpu1

Disse variabler kan have forskellige længder og både være tal og tegn.

Er der nogen der har en smart måde at gøre dette på?
Avatar billede nute Nybegynder
05. marts 2004 - 14:57 #1
hvad mener du med "overholder en bestem syntaks" ?? hvad hvis din tekst indeholder en anden url ... hvordan skal du kunne se forskel på en URL der er med "korrekt" syntaks og en der er med "forkert" syntaks ??
Avatar billede kratluskeren Nybegynder
05. marts 2004 - 15:07 #2
ok glem det med syntaksen.
Jeg skal lede efter denne url i teksten
http://www.tester.dk/test.asp?id= + noget variabelt.
Avatar billede nozio Nybegynder
05. marts 2004 - 15:14 #3
Prøv noget ala den her:

Set regEx = New RegExp
regEx.Global = True
regEx.IgnoreCase = True

regEx.Pattern = "\b(http:\/\/www.tester.dk)\S+\b"

set matches = regEx.Execute(strTemp)
for each match in matches
Response.Write match.value
next
Avatar billede deeflate Nybegynder
05. marts 2004 - 19:35 #4
Denne her tester med de to variabler, som du oprindeligt ønskede:

<% 

Function RegExpTjek(strng)
    Dim regEx, Match, Matches  ' Create variable.
    Set regEx = New RegExp  ' Create a regular expression.
    regEx.Pattern = "((http://www\.tester\.dk\/test\.asp\?id=)(\w)+(&item=)(\w)+)"  ' Set pattern.
    regEx.IgnoreCase = True  ' Set case insensitivity.
    regEx.Global = True  ' Set global applicability.
    Set Matches = regEx.Execute(strng)  ' Execute search.
    For Each Match in Matches  ' Iterate Matches collection.
      RetStr = RetStr & " ; " & Match.Value
    Next
    RegExpTjek = RetStr
  End Function

response.Write RegExpTjek("Den ene dag står der måske: http://www.tester.dk/test.asp?id=23&item=8994 og den næste dag: http://www.tester.dk/test.asp?id=23&item=89kpu1")

%>
Avatar billede deeflate Nybegynder
05. marts 2004 - 19:37 #5
Paranteserne er kun for overskuelighedens skyld. Dit pattern kan også bare være:

regEx.Pattern = "http://www\.tester\.dk/test\.asp\?id=\w+&item=\w+"
Avatar billede kratluskeren Nybegynder
08. marts 2004 - 11:58 #6
Takker meget for jeres hjælp :)
Det var lige det jeg manglede.
Avatar billede kratluskeren Nybegynder
10. marts 2004 - 13:05 #7
Har lige endnu et spg.

Hvis nu jeg ønsker at søge en tekst igennem og trække det ud der står mellem to udtryk
<span class="text">Tekst 1</span>
<span class="text">Tekst 2</span>
<span class="text">Tekst 3</span>

Hvordan gøre det så?
Har prøvet at omskrive ovenstående lidt uden held. Måske kan I hjælpe.
Vil gerne give points for det.
Avatar billede kratluskeren Nybegynder
10. marts 2004 - 13:17 #8
Output skal i dette tilfælde være:
Tekst 1
Teskt 2
Tekst 3

Skal jeg oprette et nyt spg?
Avatar billede kratluskeren Nybegynder
10. marts 2004 - 13:28 #9
Har oprettet et spg her:
http://www.eksperten.dk/spm/475531
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