Avatar billede xinux Nybegynder
11. august 2004 - 19:17 Der er 18 kommentarer og
1 løsning

Replace tekst

Hey all.

Jeg står og mangler et lille script til at replace tekst fra en formular om til html-tags til et billede af en smiley alt efter teksten selvfølgelig.

Desuden må scriptet meget gerne være i stand til at tage enter-skift med og automatisk lave en url om til et link.

Nogen som har noget lignende og brugbart liggende, eller en løsning, så ville jeg blive glad.

På forhånd tak.
Avatar billede eagleeye Praktikant
11. august 2004 - 19:48 #1
Jeg en funktion til at lave email og links om til klikbare link så det da bare et tilføje flere ting til den eks:


Function makeHTMLstr(strInput)
Set objRegExpHTTP1 = New RegExp
Set objRegExpHTTP2 = New RegExp
Set objRegExpEMail = New RegExp

objRegExpHTTP1.Pattern = "(http|ftp|https)(:\/\/[\w]+)(.[\w]+)([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?"
objRegExpHTTP2.Pattern = "(^|[^\/])(www)(.[\w]+)([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?"
objRegExpEMail.Pattern = "([\w\._-]+@[\w\._-]+\.[A-Za-z]{2,3}\S*)"

objRegExpHTTP1.Global = True
objRegExpHTTP2.Global = True
objRegExpEMail.Global = True

objRegExpHTTP1.IgnoreCase = True
objRegExpHTTP2.IgnoreCase = True
objRegExpEMail.IgnoreCase = True

strOutput = objRegExpHTTP1.Replace(strInput, "<a href='$1$2$3$4' target='_blank'>$1$2$3$4</a>")
strOutput = objRegExpHTTP2.Replace(strOutput, " $1<a href='http://$2$3$4' target='_blank'>$2$3$4</a>")
strOutput = objRegExpEMail.Replace(strOutput, " <a href='mailto:$1'>$1</a> ")

Set objRegExpHTTP2 = Nothing
set objRegExpHTTP1 = Nothing
Set objRegExpEMail = Nothing

'Laver vbCrLf linjesift om til <br> så browseren kan vise returns:

strOutput = Replace(strOutput,vbCrLf,"<br>")

'Laver smiles om til billeder, du skal nok lige rette sti og filnvn til så det passer til din side

strOutput = Replace(strOutput,":)","<img src=""/billeder/smily.gif"">")
strOutput = Replace(strOutput,":-)","<img src=""/billeder/smily.gif"">")
strOutput = Replace(strOutput,":(","<img src=""/billeder/sur.gif"">")
strOutput = Replace(strOutput,":-(","<img src=""/billeder/sur.gif"">")
strOutput = Replace(strOutput,";)","<img src=""/billeder/wsmily.gif"">")
strOutput = Replace(strOutput,";-)","<img src=""/billeder/wsmily.gif"">")
strOutput = Replace(strOutput,"8)","<img src=""/billeder/briller.gif"">")
'..Tilføje flere her


'retuner resultatet
makeHTMLstr = strOutput
End Function
Avatar billede xinux Nybegynder
11. august 2004 - 19:54 #2
Det ser rigtig fornuftig ud.
Jeg kan bare include det script der, ik? - men hvad skal jeg skrive i de input-felter som skal være påvirket af scriptet?
Avatar billede eagleeye Praktikant
11. august 2004 - 19:58 #3
Det er en funktion, du kan ligge den i bunden af din fil.
Hvis du vil lave det om når du henter fra input-felterne kan du gøre eksempelvis sådan her:

besked = makeHTMLstr(Request.Form("besked"))
Avatar billede xinux Nybegynder
11. august 2004 - 20:10 #4
Nok mig der er en hat, men det virker ik.

Skal jeg give mine forms et navn som passer til funktionen eller lignende?
Avatar billede eagleeye Praktikant
11. august 2004 - 20:12 #5
Hvis du har et form felt som dette:

<textarea name="besked"></textare>


På den side hvor du gemmer det i databasen har du sikkert noget som dette i dag:

besked = Request.Form("besked")


Det udvider du til dette:

besked = makeHTMLstr(Request.Form("besked"))
Avatar billede eagleeye Praktikant
11. august 2004 - 20:18 #6
Men du kan jo gemme teksten rå og først lave det om når du udskriver teksten. Det har den fordel hvis du laver et folder navn om eller skifter billede filnavn så vil det stadig virke.
Avatar billede xinux Nybegynder
11. august 2004 - 20:21 #7
Nej, har nu f.eks. sådan en her:

rs("username") = Server.HTMLEncode(Request("username"))

- Har prøvet med "besked = makeHTMLstr(Request.Form("besked"))" blandt dem, men der sker stadig intet. Den skriver fint i databasen, men den benytter sig ikke af funktionen..
Avatar billede eagleeye Praktikant
11. august 2004 - 20:23 #8
Hvordan ser din SQL sætning så ud?
Avatar billede xinux Nybegynder
11. august 2004 - 20:26 #9
Set rs = Server.CreateObject("ADODB.Recordset")
    strSQL = "select * from news"
    rs.Open strsql, conn, 1, 3

Håber det er den du mener :)
Avatar billede eagleeye Praktikant
11. august 2004 - 20:33 #10
Måske, bruger du rs.AddNew så?
hvordan ser linjen ud hvor du gemmer det input felt som ikke virker?
Avatar billede xinux Nybegynder
11. august 2004 - 20:37 #11
Jep, bruger rs.AddNew

<textarea cols="54" rows="10" name="comment"  name="besked"></textarea>
Avatar billede xinux Nybegynder
11. august 2004 - 20:37 #12
sludder - unden comment self.. :)
Avatar billede eagleeye Praktikant
11. august 2004 - 20:38 #13
men hvordan ser linjen ud som gemmer comment??

rs("comment") = xxxx
Avatar billede eagleeye Praktikant
11. august 2004 - 20:39 #14
HVis der står:

rs("comment") = request.form("comment")


Skal det være der funktionen klades sådan her:

rs("comment") = makeHTMLstr(request.form("comment"))
Avatar billede xinux Nybegynder
11. august 2004 - 20:39 #15
rs("comment") = Server.HTMLEncode(Request("comment"))
Avatar billede xinux Nybegynder
11. august 2004 - 20:40 #16
Ja, det kan jeg godt se nu du siger det.. Prøver lige ad..
Avatar billede eagleeye Praktikant
11. august 2004 - 20:41 #17
Ja det går så ikke at bruge Server.HTMLEncode efter man har kladt makeHTMLstr for den vil ødelægge links og billede tags så man skal havde dem kaldt sådan her:

rs("comment") = makeHTMLstr(Server.HTMLEncode(Request("comment")))
Avatar billede xinux Nybegynder
11. august 2004 - 20:42 #18
For fanden ja! :) - Du er dagens mand i skysovs.

Svar for point og tusinde tak for hjælpen..
Avatar billede eagleeye Praktikant
11. august 2004 - 20:44 #19
Ok :)
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