/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
"finde" links i en tekst....Script problem~
Fra : Michael Arildsen


Dato : 24-11-02 17:34

Hej

Jeg har fundet dette script som kan finde og aktivere links i en
tekst. Det virker sådan set også fint, men der er bare lige et
problem. Det "opfatter" alle ord, efterfulgt af et punktum som et
link og aktiverer ordet. Kan man forhindre dette og hvordan?

Håber i forstår hvad jeg mener...På forhand tak.

mvh M.Arildsen



<%
' ===[ AutoHighLight af Janus Kamp Hansen ]
=================================
'
'
'
' Forklaring:
'   Denne funktion kan highlighte http adresser.
'
'   De kriterer som den udvælger er   når to ord er sammensat med et
punktum. Dette
' er så vidt jeg kan se den eneste måde at validere hvorvidt
dette er en http adresse.
' Så finder funtionen start og slut på adressen, enten ved at
finde starten på et
' htmltag eller et mellemrum. Herefter undersøges den udklipede
streng for om der er punktum
' efter adressen og fjerner dette i <a href>-tagget. Hvis ikke
adresse starter med http:// så på-
'   hæftes dette og yderligere lægges <a href>-tagget omkring
strengen. Tilslut
'   indsættes den udklippede streng igen i helheden. Dette
fortsætter til helheden er gennemløbet.
' Som en ekstra lille feature, så tager funktionen også højde for
om adressen er en email
'   adresse og indsætter i stedet <a mailto:>-tagget.
'
' Koden er skrevet på engelsk mht. at andre nationalitet kunne
bruge denne.
'
'
=================================================================
==========


   Function AutoHighlight(Streng)

      sString = Streng      
   DotFound = 0
      StringEOF = False
   
      Do Until StringEOF = True
      
         DotFound = InStr((DotFound + 1), sString, ".")
         
         If Not DotFound = 0 then
            If (Mid(sString, DotFound -1, 1) <> " ") And (Mid(sString,
DotFound +1, 1) <> " ") then
   
                  StartAttempt1 = InstrRev(sString, " ", DotFound)
                  StartAttempt2 = InstrRev(sString, ">", DotFound)
                  If StartAttempt1 > StartAttempt2 then StringStartPos =
(StartAttempt1 + 1) Else StringStartPos = (StartAttempt2 + 1)
   
                  EndAttempt1 = Instr(DotFound + 1, sString, " ")
                  EndAttempt2 = Instr(DotFound + 1, sString, "<")
   
                  Select Case EndAttempt1
                  Case 0
                     StringEndPos = EndAttempt2
                  Case Else
                     If EndAttempt1 < EndAttempt2 Then StringEndPos =
(EndAttempt1) Else StringEndPos = (EndAttempt2)
                  End Select
                  
                  If StringEndPos = 0 then StringEndPos = Len(sString) + 1
                  httpaddr = Mid(sString, StringStartPos, (StringEndPos -
StringStartPos))
                  
                  If mid(httpaddr, len(httpaddr), 1) = "." then httpaddr =
mid(httpaddr,1, len(httpaddr) -1)
                  



If not
cbool(InStr(1, httpaddr, "@")) then
                     If UCase(mid(httpaddr, 1, 7)) <> UCase("http://") then
                        correcthttpaddr = "http://" & httpaddr
                     Else
                        correcthttpaddr = httpaddr
                     End If      
                     
                     ReplaceAddressWith = "<a href=""" & correcthttpaddr &
""">" & httpaddr & "</a>"
                     sString = mid(sString, 1, StringStartPos - 1) &
ReplaceAddressWith & Mid(sString, StringEndPos, len(sString))
                     DotFound = StringStartPos + len(ReplaceAddressWith)
                  Else
                     If UCase(mid(httpaddr, 1, 7)) <> UCase("mailto:") then
                        correctaddr = "mailto:" & httpaddr
                     Else
                        correctaddr = httpaddr
                     End If      
                     
                     ReplaceAddressWith = "<a href=""" & correctaddr & """>" &
httpaddr & "</a>"
                     sString = mid(sString, 1, StringStartPos - 1) &
ReplaceAddressWith & Mid(sString, StringEndPos, len(sString))
                     DotFound = StringStartPos + len(ReplaceAddressWith)
                  End If
            
End If
         Else
            StringEOF = True
         End if   
      Loop
      AutoHighlight = sString
      
   End Function
%>

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Mark S. Rasmussen (24-11-2002)
Kommentar
Fra : Mark S. Rasmussen


Dato : 24-11-02 19:29

> Jeg har fundet dette script som kan finde og aktivere links i en
> tekst. Det virker sådan set også fint, men der er bare lige et
> problem. Det "opfatter" alle ord, efterfulgt af et punktum som et
> link og aktiverer ordet. Kan man forhindre dette og hvordan?
>
> Håber i forstår hvad jeg mener...På forhand tak.

Det var godt nok noget af et script til en ellers relativ simpel opgave. Jeg
har en lille funktion her som jeg bruger på mine .NET sider. Det er meget
lidt der skal tilrettes før de også virker i klassisk ASP:

Function MakeLinks(sText)
Dim ret As String = " " & sText

ret = regEx.replace(ret, "([\n
&nbsp;])www\.([a-z0-9\-]+)\.([a-z0-9\-.\~]+)((?:/[^, \n\r]*)?)", "$1<a
href=""http://www.$2.$3$4"" target=""_blank"">www.$2.$3$4")
ret = regEx.replace(ret, "([\n &nbsp;])([a-z]+)://([a-zA-Z0-9/.\-?&]+)",
"$1<a href=""$2://$3"" target=""_blank"">$2://$3</a>")
ret = regEx.replace(ret, "([\n
&nbsp;])([a-zA-Z0-9\-_.]+)@([a-zA-Z0-9.-]+)", "$1<a
href=""mailto:$2@$3"">$2@$3</a>")

ret = right(ret, len(ret)-1)

Return ret
End Function

Mvh Mark
--
www.improve.dk



Michael Arildsen (24-11-2002)
Kommentar
Fra : Michael Arildsen


Dato : 24-11-02 19:52

> Det var godt nok noget af et script til en ellers relativ simpel opgave. Jeg
> har en lille funktion her som jeg bruger på mine .NET sider. Det er meget
> lidt der skal tilrettes før de også virker i klassisk ASP:


Nu har jeg en relativ lille erfaring med ASP og din funktion er rent "volapyk"
for mig Det er sikkert en lille smart funktion, men jeg kan bedre "følge" hvad
der sker i det store script.

Kunne du forklare lidt om hvad der skal ændres for at funktionen virker i ASP.

På forhånd tak
Mvh M.Arildsen





--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jens Gyldenkærne Cla~ (25-11-2002)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 25-11-02 11:17

Michael Arildsen skrev:

> Jeg har fundet dette script som kan finde og aktivere links i
> en tekst. Det virker sådan set også fint, men der er bare lige
> et problem. Det "opfatter" alle ord, efterfulgt af et punktum
> som et link og aktiverer ordet. Kan man forhindre dette og
> hvordan?


Brug et par minutter på at lede efter et bedre script. Det findes.
Automatisk markering af hyperlinks er en uhyre almindelig opgave,
så der findes masser af scripts til dette. Der er ingen grund til
at opfinde hjulet mere end én gang.


> ' ===[ AutoHighLight af Janus Kamp Hansen ]

> ' Forklaring:
> ' Denne funktion kan highlighte http adresser.
> '
> ' De kriterer som den udvælger er når to ord er
> sammensat med et punktum. Dette
> ' er så vidt jeg kan se den eneste måde at validere hvorvidt
> dette er en http adresse.


Det er - som du også har fundet ud af - ikke noget særligt godt
kriterium der er benyttet. Det script jeg selv benytter (men ikke
har skrevet) ser efter forekomster af "http://", "www" og "@". Det
vil sige at følgende links genkendes: http://dr.dk, www.dr.dk,
www.dsb.dk/indland, msn@msn.com - mens links som dr.dk,
tv2.dk og nyheder.tv2.dk ikke genkendes.

Det er meget svært at lave en failsafe genkendelse af link uden at
kræve en særlig markering af brugerne. Den metode "mit"
script benytter fungerer fint med almindelige adresser (webadresser
der begynder med "www" og mailadresser), og andre adresser kan
markeres alene ved at sætte http:// foran.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408952
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste