Avatar billede Slettet bruger
23. oktober 2002 - 09:12 Der er 11 kommentarer og
1 løsning

Sluk for funktion når ordet står i anførselstegn.

Hej -

Jeg bruger nedenstående funktion til angivelse af links, og det funker såment fint nok.

MEN - Jeg vil gerne de-aktivere denne funktion hvis linkangivelsen forekommer mellem 2 anførselstegn.

Eksempel:

' Denne skal være aktiv:
Se min site http://www.bloteteksempel.dk osv.

' Denne skal de-aktiveres:
Se min site "http://www.bloteteksempel.dk" osv.


'Nuværende funktion til linkangivelse:
Function LinkString(strInput)
        arrPattern = Array("([\w\._-]+@[\w\._-]+\.[A-Za-z]{2,4}\S*)", _
        "(http|https|ftp)(:\/\/[\w\._-]+\.[\w\._-]+\S*)")

        arrReplaceString = Array(" <a href='mailto:$1'><img src='img/getemail_small.gif' title='$1' border='0' vspace='2'></a> ", _
        " <a href='$1$2' target='_blank'><img src='img/getwww_small.gif' title='$1$2' border='0' vspace='2'></a> ", _
        " <a href='http://$2' target='_blank'><img src='img/getwww_small.gif' title='$2' border='0' vspace='2'></a> ")

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

        For intIndex = 0 To UBound(arrPattern)
            Rx.Pattern = arrPattern(intIndex)
            strInput = Rx.Replace(strInput, arrReplaceString(intIndex))
        Next
       
        Set Rx = Nothing

        LinkString = strInput
End Function


Hvem ka' hjælpe :-)
Mvh, Michael
Avatar billede dk_akj Nybegynder
23. oktober 2002 - 09:20 #1
Er det sådan du mener ???


Function LinkString(strInput)

if (left(strInput,1) = char(34) and right(strinput,1) = char(34) ) then
  LinkString = ""
else
 
        arrPattern = Array("([\w\._-]+@[\w\._-]+\.[A-Za-z]{2,4}\S*)", _
        "(http|https|ftp)(:\/\/[\w\._-]+\.[\w\._-]+\S*)")

        arrReplaceString = Array(" <a href='mailto:$1'><img src='img/getemail_small.gif' title='$1' border='0' vspace='2'></a> ", _
        " <a href='$1$2' target='_blank'><img src='img/getwww_small.gif' title='$1$2' border='0' vspace='2'></a> ", _
        " <a href='http://$2' target='_blank'><img src='img/getwww_small.gif' title='$2' border='0' vspace='2'></a> ")

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

        For intIndex = 0 To UBound(arrPattern)
            Rx.Pattern = arrPattern(intIndex)
            strInput = Rx.Replace(strInput, arrReplaceString(intIndex))
        Next
       
        Set Rx = Nothing

        LinkString = strInput
end if
End Function
Avatar billede Slettet bruger
23. oktober 2002 - 09:48 #2
Umiddelbart lyder det som et godt bud, men det duer bare ikke helt efter hensigten. Det er ikke sikker at anførselstegnet forekommer som første og sidste led af min string....

Jeg bruger i øvrigt dette replace-loop til at angive teksten mellem anførselstegnene:

strRpl = LSvar
    DO
      startPos = Instr(1,strRpl,"""",1)
      slutPos = InStr (Cint(startPos)+1,strRpl,"""",1) 
      If (startPos > 0) and (slutPos > 0) then
        strRpl = Replace(strRpl,"""","[<font$$!$$color=#0000FF>",1,1,0)
        strRpl = Replace(strRpl,"""","</font>]",1,1,0)
      end if
    LOOP WHILE (startPos > 0) and (slutPos > 0)   
    strRpl = Replace(strRpl,"[<font$$!$$color=#0000FF>","<font$$!$$color=#0000FF>""")
    strRpl = Replace(strRpl,"</font>]","""</font>")
LSvar = strRpl

- måske kan de 2 scripts smeltes sammen ;-)
Avatar billede dk_akj Nybegynder
24. oktober 2002 - 14:04 #3
Så skal du vel bare lave den om til  :

pos1 = instr(stringinput,char(34))
pos2 = instr(stringinput,"http"))


if  (pos1 > 0  and pos2 > pos1) then
  LinkString = ""
else
  ...


Jeg checker for http < " for det kan jo tænkes at " indgår som en del af url'en.

//akj
Avatar billede Slettet bruger
30. oktober 2002 - 08:35 #4
Sorry - havde helt glemt den her..

Den dríller sq stadig :(

Nu har jeg lavet det sådan at der fremkommer en comment i HTML'en når anførselstegnet starter og slutter. Det ser sådan ud:

<!--com1-->"bl.a. bl.a. o.s.v."<!--com2-->

Dvs. at min funktion skal deaktiveres når <!--com1--> detektes og aktiveres når <!--com2--> forefindes.

Har du et bud på det :)

Ps. lav lige et svar når du vil have nogle point
/Michael
Avatar billede dk_akj Nybegynder
30. oktober 2002 - 08:55 #5
Den forstod jeg ikke helt...
Har du dine links i en db ??

som jeg har forstået det.

<!--com1-->www.google.com      skal ikke vises/ vises men ikke som link ?
<!--com2->www.eksperten.dk      vises som link ??

//akj
Avatar billede Slettet bruger
30. oktober 2002 - 09:27 #6
Ja, det hele trækkes fra en DB.

Det er forstået rigtigt.
<!--com1--> slukker funktionen og <!--com2--> starter den igen:

<!--com1--> alle link skal vises men må ikke være aktive <!--com2--> her er alle links aktive igen <!--com1--> links deaktive osv. <!--com2-->
Avatar billede dk_akj Nybegynder
30. oktober 2002 - 09:30 #7
Jeg ville mene at det var bedre, lettere og mere stabilt at lægge et felt mere på din tabel med links og så styre det derfra. Har du overvejet det ??

//akj
Avatar billede Slettet bruger
30. oktober 2002 - 09:41 #8
Det vil være et for stort arbejde da der ligger flere hundrede poster i databasen, og samtlige link ligger uvilkårligt i de enkelte poster.

Felterne <!--com1--> og <!--com2--> ligger heller ikke i DB'en men bliver dynamisk tilskrevet når teksten inklammes af anførselstegn. Grunden til at jeg har tilføjet dem er at gøre det lettere at detekte om funktionen skal tændes eller slukkes, frem for anførselstegnene...
Avatar billede dk_akj Nybegynder
30. oktober 2002 - 09:53 #9
Ok, det du skal er jo egentligt bare at have fjernet <a href> tag'et.

pos1 = instr(stringinput,"<!--com1-->")
if pos1 > 0 then ' vi skal have fjernet <a href tag'et
  pos2 = instr(stringinput,"<a") ' start af <a
  pos3 = instr(pos2,stringinput,">") ' slut af a
  srep = mid(stringinput,pos2,pos3 - pos2) ' srep skulle nu gerne indeholde f.eks "<a href='http://$2' target='_blank'>"
  replace (stringinput,srep,"") 'erstat link med ""

end if
Avatar billede Slettet bruger
30. oktober 2002 - 10:20 #10
Hmm..

Jeg syntes det virker lidt bagvendt. Der er ingen grund til at tilføje 'href' for derefter at fjerne det igen. Desuden skal </a> jo også fjernes.

Det jeg søger er jo egentligt bare et loop implementeret i funktionen der afviger når stringen er iblandt mine comment.

Eller er det ikke muligt at lave en undtagelsesliste i min array pattern?

:-)
Avatar billede dk_akj Nybegynder
30. oktober 2002 - 10:24 #11
Jeg tilføjer ikke noget href jeg søger efter det, findes href og com1
fjerner jeg href.

Ja, du skal også fjerne </a>
Avatar billede Slettet bruger
30. oktober 2002 - 10:30 #12
Det jeg mener er at der er ingen grund til at jeg har en funktion som nu, der tilføjer 'href' og så derefter søge på det og fjerne det igen. Jeg prøver at få førstnævnte funktion de-aktiveret i tilfælde af <!--com1-->

Nok om det - jeg prøver at rode lidt vidre med det
Tak for hjælpen
~ Michael
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