Avatar billede Jman Praktikant
23. januar 2004 - 02:39 Der er 7 kommentarer og
2 løsninger

problem med replace

Jeg har et problem med replace
Jeg har en side, hvor bruger kan taste en masse ind i et tekstarea. Hvis de taster www.domæne.dk vil jeg erstatte med et rigtigt link.
Jeg har gjort følgende:
IndexTxt = rs("IndexTxt")
IndexTxt = Replace(IndexTxt,"www","<a class=""text"" target=""_blank"" href=http://www")
IndexTxt = Replace(IndexTxt,".dk",".dk"</a>")

Det virker frem til den sidste > - det vil den altså ikke acceptere. Jeg har deslige prøvet med chr(62), som er > - det vil den heller ikke.
Hvad kan man så gøre ?
Avatar billede truelz Nybegynder
23. januar 2004 - 07:11 #1
Der er en " for meget efter .dk.
Men husk nu at dette script går galt hvis folk f.eks. skriver flg. adresse:
http://www.domæne.dk
Avatar billede Jman Praktikant
23. januar 2004 - 07:15 #2
det er ikke det der er problemet ... det er at den ikke vil acceptere >
Kan godt se at den er for meget i ovenstående, men det er fordi jeg har prøvet så mange muligheder at den kom med i copy/pastingen..

Der er en anden replace for http:// (!)
Avatar billede truelz Nybegynder
23. januar 2004 - 07:20 #3
Tja, der mangler i hvert fald også en " efter "test"
Men det er jo nok heller ikke problemet, så
Jeg tør ikke sige det, og jeg er desværre nødt til at køre nu
Avatar billede fennec Nybegynder
23. januar 2004 - 08:38 #4
IndexTxt = "www.test.dk"
IndexTxt1 = "www.test.dk"
IndexTxt = Replace(IndexTxt,"www","<a class=""text"" target=""_blank"" href=""http://www")
IndexTxt = Replace(IndexTxt,".dk",".dk"">"& IndexTxt1 &"</a>")
Response.write IndexTxt & "<br>"

dette virker.....
der er en ekstra variabel for at få link-teksten indimellem <a></a>
Avatar billede Jman Praktikant
23. januar 2004 - 08:48 #5
men dutter ikke - jeg pille ikke www-adressen ud af ca. 1000 anslag
p.s. hvad er forskellen på IndexTxt og IndexTxt1 i dit forslag ?
Avatar billede fennec Nybegynder
23. januar 2004 - 09:16 #6
du bliver nød til at gemme den skrevne url på en eller anden måde. Ellers har du ikke noget at vise mellem dine <a></a> felter. Da der sikkert kan være flere url'er i teksten skal du til at lave noget inStr og andre ting (meget indviklet). Et alternativ er at gøre det på denne måde....

IndexTxt = "dette er en url www.test.dk. Fortsæt her www.test1.dk"
IndexTxt1 = "url"

prøv dette med overstående.
IndexTxt1 skal på en eller anden måde indeholde din url, det er her du skal bruge inStr, men i dette eksempel har du ret i at den ikke gør noget....

Det slog mig lige at hvis du kan lave en split på teksten, så du sikre dig at der kun er en url i hver tekstdel, kan du sætte IndexTxt1 = url'en med inStr, også lave din replace. Dette skal selvfølgelig gøres for hver tekstdel.
Avatar billede eagleeye Praktikant
23. januar 2004 - 10:55 #7
Problemet med at skift www til http://wwww og .dk til .dk></a> så vil der ikke være noget at klikke på da det man klikker på er imellem <a href=..> og </a>
Der findes scripts til det formål at lave klikbare links i en tekst:

Alternativt brug denne (som er vinder på www.netcoders.dk i en konkurrance).
http://www.netcoders.dk/sources.asp?mode=view_source&cat_id=9&id=859&tech_id=1
Den er lavet med string funktion og virker derfor hos b-one.

Her er en samling af de scripts som var med i konkurransen.:
http://www.netcoders.dk/sources.asp?mode=view_source&cat_id=9&id=860&tech_id=1



Jeg har selv brugt denne som laver www adresser om til trykbare links, den gør brug af regular expressions.

Function LinkString2(strInput)
Set objRegExpHTTP1 = New RegExp
objRegExpHTTP1.Global = True
objRegExpHTTP1.IgnoreCase = True

objRegExpHTTP1.Pattern = "(http|ftp|https)(:\/\/[\w]+)(.[\w]+)([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?"
strOutput = objRegExpHTTP1.Replace(strInput, "<a href='$1$2$3$4' target='_blank'>$1$2$3$4</a>")

objRegExpHTTP1.Pattern = "(^|[^\/])(www)(.[\w]+)([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?"
strOutput = objRegExpHTTP1.Replace(strOutput, " $1<a href='http://$2$3$4' target='_blank'>$2$3$4</a>")

set objRegExpHTTP1 = Nothing

LinkString2 = strOutput
End Function


Og den kaldes sådan her:

str = "En steng som indeholder links www.eksperten.dk som skal laves om til klikbare links."
response.write LinkString2 (str)
Avatar billede Jman Praktikant
23. januar 2004 - 16:45 #8
naah ... da det er et site, defr vedligeholdes af en håndfuld personer og jeg ved hvilke sider, de henviser til plukker jeg den fulde www-adrese i stedet.
Det er bare ikke så dynamisk, som jeg ville have haft det til...
Eagleeye: det er ikke helt korrekt - jeg har både klikbar tekst og link... Jeg mangler bare det sk*de sidste >, som den ikke vil medtage...
Avatar billede eagleeye Praktikant
23. januar 2004 - 16:48 #9
ok jeg syntes bare ikke jeg kan se hvordan det kommer ind??

IndexTxt = rs("IndexTxt")
IndexTxt = Replace(IndexTxt,"www","<a class=""text" target=""_blank"" href=http://www")
IndexTxt = Replace(IndexTxt,".dk",".dk"</a>")

Prøv at rette dem til:

IndexTxt = rs("IndexTxt")
IndexTxt = Replace(IndexTxt,"www","<a class=""text" target=""_blank"" href=""http://www")
IndexTxt = Replace(IndexTxt,".dk",".dk""></a>")
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