Avatar billede gatez Nybegynder
29. januar 2005 - 11:53 Der er 13 kommentarer og
1 løsning

URL Tekst funktion

Hejsa,

Jeg kan ikke finde fejlen i det her... den udskrive det forkert... Hvis der er et "<br>" bagefter en url så tager den "<br>" med som en del af web adressen...

Prøv evt. at test dette script... så kan i se hvad jeg mener:

<%
Function text_format(Tekst)
text_format = ""
A_Start = 1

if InStr(Tekst, "http://") then
  do until A_Start >= len(Tekst)
  LinkChr = InStr(A_Start, Tekst, "http://")
  NextSpace = InStr(LinkChr, Tekst, " ")

  if NextSpace = 0 then NextSpace = Len(Tekst) + 1

  URL = Mid(Tekst, LinkChr, NextSpace - LinkChr)

  text_format = text_format & Mid(Tekst, A_Start, LinkChr - A_Start)
  text_format = text_format & "<a href=" & Chr(34) & URL & Chr(34) & " target='_blank'><u>" & URL & "</u></a>"

  if Int(LinkChr) = Int(InStrRev(Tekst, "http://")) then
    text_format = text_format & Mid(Tekst, NextSpace, Len(Tekst) - A_Start)
    A_Start = Len(Tekst)
  else
    A_Start = NextSpace
  end if
  loop
else
  text_format = Tekst
end if

text_format = replace(text_format,vbcrlf,"<br>")
text_format = replace(text_format,":-)","<img src=""http://www.bodykits.dk/designimages3/forum/smiley/smiley.gif"">")
text_format = replace(text_format,"B-)","<img src=""http://www.bodykits.dk/designimages3/forum/smiley/sej.gif"">")
text_format = replace(text_format,":-D","<img src=""http://www.bodykits.dk/designimages3/forum/smiley/glad.gif"">")

'OLD
text_format = replace(text_format,";-)","<img src=""http://www.bodykits.dk/Images/smiley/smiley-blink.gif"">")
text_format = replace(text_format,":-S","<img src=""http://www.bodykits.dk/Images/smiley/smiley-S.gif"">")
text_format = replace(text_format,":-|","<img src=""http://www.bodykits.dk/Images/smiley/smiley-I.gif"">")
text_format = replace(text_format,":-(","<img src=""http://www.bodykits.dk/Images/smiley/smiley2.gif"">")
text_format = replace(text_format,":-O","<img src=""http://www.bodykits.dk/Images/smiley/smiley-O.gif"">")
text_format = replace(text_format,":-o","<img src=""http://www.bodykits.dk/Images/smiley/smiley-O.gif"">")
text_format = replace(text_format,":-P","<img src=""http://www.bodykits.dk/Images/smiley/smiley-P.gif"">")
text_format = replace(text_format,":-p","<img src=""http://www.bodykits.dk/Images/smiley/smiley-P.gif"">")
text_format = replace(text_format,"(N)","<img src=""http://www.bodykits.dk/Images/smiley/No.gif"">")
text_format = replace(text_format,"(n)","<img src=""http://www.bodykits.dk/Images/smiley/No.gif"">")
text_format = replace(text_format,"(Y)","<img src=""http://www.bodykits.dk/Images/smiley/Yes.gif"">")
text_format = replace(text_format,"(y)","<img src=""http://www.bodykits.dk/Images/smiley/Yes.gif"">")
text_format = replace(text_format,"(I)","<img src=""http://www.bodykits.dk/Images/smiley/I.gif"">")
text_format = replace(text_format,"(i)","<img src=""http://www.bodykits.dk/Images/smiley/I.gif"">")
text_format = replace(text_format,"(C)","<img src=""http://www.bodykits.dk/Images/smiley/C.gif"">")
text_format = replace(text_format,"(c)","<img src=""http://www.bodykits.dk/Images/smiley/C.gif"">")

End Function
%>
<%
lol = "Se min hjemmeside på http://www.test.dk<br>test, se også http://www.looool.dk hehe ''http://www.testing.dk'' B-)"
Response.Write text_format(lol)
%>


Hvad gør jeg galt ?
Avatar billede softspot Forsker
29. januar 2005 - 12:09 #1
Er det ikke fordi du kun leder efter mellemrum som afslutning på dine links?
Avatar billede gatez Nybegynder
29. januar 2005 - 12:11 #2
Jo... men hvordan for jeg det til at "lede" efter <br> / vbcrlf tags også ?
Avatar billede gatez Nybegynder
29. januar 2005 - 12:14 #3
InStr(LinkChr, Tekst, " ")
Der skal jo mere end " " her... hvordan gør man det ?

InStr(LinkChr, Tekst, "( ,<br>)") - virker ik...
Avatar billede softspot Forsker
29. januar 2005 - 12:20 #4
Du kunne lave en funktion som checker for alle tre (eller måske mere generisk på alle substrenge i et array) og returnerer positionen for den først forekommende. Noget i stil med dette:

function expectNext(startpos, tekst, expect)
  dim p, px

  if isarray(expect) then
    ' gennemløb alle substrenge i expect-array'et
    ' og find det der ligger nærmest startpositionen
    for i = 0 to ubound(expect)
      px = instr(startpos, tekst, expect(i))
      if px < p and px > 0 then
        p = px
      end if
    next
  else
    p = instr(startpos, tekst, expect)
  end if

  expectNext = p
end function
Avatar billede gatez Nybegynder
29. januar 2005 - 12:23 #5
Fin idé... men jeg aner bare ikke hvordan jeg for det til at virke i min kode...
Kan du hjælpe med det ?
Avatar billede softspot Forsker
29. januar 2005 - 12:28 #6
jeg vile mene at du skulle kalde expectNext der hvor du nu kalder instr, altså noget i stil med:

do until A_Start >= len(Tekst)
  LinkChr = InStr(A_Start, Tekst, "http://")
  NextSpace = expectNext(LinkChr, Tekst, array(" ",",","<br>"))

  if NextSpace = 0 then NextSpace = Len(Tekst) + 1

  URL = Mid(Tekst, LinkChr, NextSpace - LinkChr)

  text_format = text_format & Mid(Tekst, A_Start, LinkChr - A_Start)
  text_format = text_format & "<a href=" & Chr(34) & URL & Chr(34) & " target='_blank'><u>" & URL & "</u></a>"

  if Int(LinkChr) = Int(InStrRev(Tekst, "http://")) then
    text_format = text_format & Mid(Tekst, NextSpace, Len(Tekst) - A_Start)
    A_Start = Len(Tekst)
  else
    A_Start = NextSpace
  end if
loop
Avatar billede gatez Nybegynder
29. januar 2005 - 12:32 #7
... det giver fejl... på denne linie:
NextSpace = expectNext(LinkChr, Tekst, array(" ",",","<br>"))

Type mismatch: 'expectNext'

--- HELE KODEN ---
Function text_format(Tekst)
text_format = ""
A_Start = 1

if InStr(Tekst, "http://") then
  do until A_Start >= len(Tekst)
  LinkChr = InStr(A_Start, Tekst, "http://")
  NextSpace = expectNext(LinkChr, Tekst, array(" ",",","<br>"))

  if NextSpace = 0 then NextSpace = Len(Tekst) + 1

  URL = Mid(Tekst, LinkChr, NextSpace - LinkChr)

  text_format = text_format & Mid(Tekst, A_Start, LinkChr - A_Start)
  text_format = text_format & "<a href=" & Chr(34) & URL & Chr(34) & " target='_blank'><u>" & URL & "</u></a>"

  if Int(LinkChr) = Int(InStrRev(Tekst, "http://")) then
    text_format = text_format & Mid(Tekst, NextSpace, Len(Tekst) - A_Start)
    A_Start = Len(Tekst)
  else
    A_Start = NextSpace
  end if
loop
else
  text_format = Tekst
end if
Avatar billede softspot Forsker
29. januar 2005 - 12:37 #8
Arbejder på sagen... :)
Avatar billede gatez Nybegynder
29. januar 2005 - 12:39 #9
;) mange tak...
Avatar billede softspot Forsker
29. januar 2005 - 12:45 #10
Prøv lige at udskifte expectNext funktionen med denne version:

function expectNext(startpos, tekst, expect)
    dim p, px
    p = 0
    px = 0
     
    if isarray(expect) then
        ' gennemløb alle substrenge i expect-array'et
        ' og find det der ligger nærmest startpositionen
        for i = 0 to ubound(expect)
            px = instr(startpos, tekst, expect(i))
            if ((px < p and p <> 0) or px > startpos) and px > 0 then
                p = px
            end if
        next
    else
        p = instr(startpos, tekst, expect)
    end if

    expectNext = p
end function
Avatar billede gatez Nybegynder
29. januar 2005 - 12:52 #11
expectNext funktionen ?  Nu er jeg ikke lige helt med...

hehe jeg er ikke nogle ørn til det ;) sorry
Avatar billede softspot Forsker
29. januar 2005 - 12:54 #12
du skal klippen den kode jeg har postet ud af browseren og sætte den ind foran den funktion du allerede har i din asp-fil, så burde det fungere...
Avatar billede gatez Nybegynder
29. januar 2005 - 13:15 #13
Hey, yes... nu virker det sq ;)  Mange takker !
Smid et svar ;)

Hvis jeg skal have flere "slut-tags" på listen kan jeg så bare gøre det sådan:
NextSpace = expectNext(LinkChr, Tekst, array(" ",",","'",vbcrlf))

Uden at skulle rette det andre steder ?
Avatar billede softspot Forsker
29. januar 2005 - 13:38 #14
Det vil jeg mene, ja.
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