Avatar billede -thomas- Nybegynder
23. december 2003 - 09:51 Der er 11 kommentarer og
1 løsning

Ændre html-tags

Hvordan laver jeg en funktion, som laver fx. dette:

<a href="default.asp">Link</a>

om til

Link (default.asp)

i en tekststreng. Altså konverterer alle html-links til. tekst med linket i parentes bagefter.
Avatar billede soda Nybegynder
23. december 2003 - 10:01 #1
Forstår ikke helt hvad du mener..

Ville du så have HTML koden til, at se sådan her ud:

Link (<a href="default.asp">default.asp</a>)

i stedet for  <a href="default.asp">Link</a> ?
Avatar billede -thomas- Nybegynder
23. december 2003 - 10:25 #2
Nej, hvis html-koden er:

Klik på dette link: <a href="default.asp">Link</a>

skal det laves om til:

Klik på dette link: Link (default.asp)

(altså uden html)
Avatar billede -thomas- Nybegynder
23. december 2003 - 10:30 #3
Jeg er nået så langt, men kan ikke hitte ud af, hvordan jeg indsætter adressen på linket:

Function funcReplaceLinks(str)
    Set objRegExp = New RegExp
    objRegExp.IgnoreCase = True
    objRegExp.Global = True

    objRegExp.Pattern = "<a\s+href[^>]+>"
    str = objRegExp.Replace(str, "")

    objRegExp.Pattern = "</\a>"
    str = objRegExp.Replace(str, " (her skal linket stå)")

    Set objRegExp = Nothing
    funcRemoveLinkFromString = str
End Function
Avatar billede -thomas- Nybegynder
23. december 2003 - 10:31 #4
Prøver lige igen:

Function funcReplaceLinks(str)
    Set objRegExp = New RegExp
    objRegExp.IgnoreCase = True
    objRegExp.Global = True

    objRegExp.Pattern = "<a\s+href[^>]+>"
    str = objRegExp.Replace(str, "")

    objRegExp.Pattern = "</\a>"
    str = objRegExp.Replace(str, "(her skal linket stå)")

    Set objRegExp = Nothing
    funcReplaceLinks= str
End Function
Avatar billede zkiifreak Nybegynder
23. december 2003 - 10:45 #5
Hej Thomas.
Bruger selv ngt der _minder_ om det du prøver på. Har selv udviklet nedenstående, som gør, at man ej kan skrive html-tags i min gæstebog (da dette kan medføre ondsindet kode), men man kan skrive [a]link[/a] istedet, og så laver den det om til et html-tag. Dette betyder, at det er MIG, der styrer om der kommer tags i en post. Bare til inspiration:

    tmp = replace(trim(request.Form("Kommentar")), "'", "''")
    tmp = replace(tmp, "<", "(")
    tmp = replace(tmp, ">", ")")
    splittemp = tmp
    splittet = split(splittemp, "[a]", -1, 1)
    while instr(tmp, "[a]") <> 0
        splittemp = tmp
        splittet = split(splittemp, "[a]", 2, 1)
        if not splittet(0) = splittemp then
            splittet2 = split(splittet(1), "[/a]", 2, 1)
            if Instr(1, splittet2(0), "@", 1) > 0 then
                splittet2 = split(splittet(1), "[/a]", 2, 1)
                tmp = (splittet(0) & " <a href=mailto:" & splittet2(0) & ">" & splittet2(0) & "</a> " & splittet2(1))
            else
                tmp2 = replace(splittet2(0), "http://" , "")
                tmp2 = "http://" & tmp2
                linktmp = replace(splittet2(0), "http://", "")
                tmp = (splittet(0) & " <a href=" & tmp2 & " target=_blank>" & linktmp & "</a> " & splittet2(1))
            end if
        else
            tmp = splittemp
        end if
    Wend

ZkiiFreak
Avatar billede eagleeye Praktikant
17. januar 2004 - 23:36 #6
Er dette stadig åbent??
Vil du havde det som en regular expression funktion?
Avatar billede -thomas- Nybegynder
18. januar 2004 - 10:32 #7
Hej eagleeye, ja det er stadig åbent. Indtil videre har jeg bare fjernet alle html-tags, men så kan man ikke se, hvad der har været links.

Ja, det må gerne være med RegExp - det skal køre på IIS.
Avatar billede eagleeye Praktikant
18. januar 2004 - 12:03 #8
Du kan lave en function som denne det er næsten det samme pattern som i den du selv har lavet.:

<%

function makeLinks(str)
  Set objRegExp = New RegExp
  objRegExp.IgnoreCase = True
  objRegExp.Global = True
  objRegExp.Pattern = "(<a\s+href=(.*?)>(.*?)</a>)"
  makeLinks = objRegExp.Replace(str, " ($1)")
  Set objRegExp = Nothing
end function


str = "en test <a href=""default.asp"">link</a> en test mere <a href=""http://www.eksperten.dk"">eksperten</a> TEST"

Response.write makeLinks(str)

%>
Avatar billede -thomas- Nybegynder
19. januar 2004 - 08:45 #9
Ja, det begynder at ligne noget - men den skal i parentesen vise selve linket, så det bliver:

en test link (default.asp) en test mere eksperten (http://www.eksperten.dk) TEST

Er det muligt?
Avatar billede eagleeye Praktikant
19. januar 2004 - 18:31 #10
Ja prøv at lave de om til dette:

function makeLinks(str)
  Set objRegExp = New RegExp
  objRegExp.IgnoreCase = True
  objRegExp.Global = True
  objRegExp.Pattern = "<a\s+href=""(.*?)"">(.*?)(</a>)"
  makeLinks = objRegExp.Replace(str, "$2 (<a href=$1>$1$3)")
  Set objRegExp = Nothing
end function

str = "en test <a href=""default.asp"">link</a> en test mere <a href=""http://www.eksperten.dk"">eksperten</a> TEST"

Response.write makeLinks(str)
Avatar billede -thomas- Nybegynder
19. januar 2004 - 18:38 #11
Præcis hvad jeg skulle bruge - tak for hjælpen.
Avatar billede ellebaek Nybegynder
10. februar 2004 - 23:13 #12
Husk at lukke her igen.
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