Avatar billede maskso Nybegynder
16. september 2009 - 21:37 Der er 7 kommentarer og
1 løsning

Replace mere end ét tegn.

Hej

Jeg har et textarea i en form, hvor jeg replacer visse tegn:



    function html2entities(){
var re=/[<>"'&]/g
for (i=0; i<arguments.length; i++)
arguments[i].value=arguments[i].value.replace(re, function(m){return replacechar(m)})
}

function replacechar(match){
if (match=="<")
return "<"
else if (match==">")
return ">"
else if (match=="\"")
return """
else if (match=="'")
return "'"
else if (match=="&")
return "&"
}



Det fungere alt sammen fint. Mit spørgsmål er om man kan replace flere tegn af gangen, med dette script. Jeg vil gerne sætte smiley's ind, ved f.eks: :-) og :) osv... Altså noget i denne stil (men hvor det rent faktisk fungerer):


    function html2entities(){
var re=/[<>"'&]/g
for (i=0; i<arguments.length; i++)
arguments[i].value=arguments[i].value.replace(re, function(m){return replacechar(m)})
}

function replacechar(match){
if (match=="<")
return "<"
else if (match==">")
return ">"
else if (match=="\"")
return """
else if (match=="'")
return "'"
else if (match=="&")
return "&"
else if (match==":-)")
return "<some smiley image>"
else if (match==":)")
return "<some other smiley image>"
}
Avatar billede olebole Juniormester
16. september 2009 - 21:59 #1
<ole>

Undskyld, men hvad er det, du tror, scriptet gør? Det udskifter kun \" ud med " ... intet andet

/mvh
</bole>
Avatar billede maskso Nybegynder
16. september 2009 - 22:23 #2
Jo, det er bare eksperten.dk der ikke kan vise det rigtigt... Her scriptet hvor jeg har sat nogle mellemrum ind, så det vises rigtigt:

    function html2entities(){
var re=/[<>"'&]/g
for (i=0; i<arguments.length; i++)
arguments[i].value=arguments[i].value.replace(re, function(m){return replacechar(m)})
}

function replacechar(match){
if (match=="<")
return "& l t ;"
else if (match==">")
return "& g t ;"
else if (match=="\"")
return "& q u o t ;"
else if (match=="'")
return "& # 0 3 9 ;"
else if (match=="&")
return "& a m p ;"
}
Avatar billede olebole Juniormester
16. september 2009 - 23:36 #3
Jeg forstår ikke helt, hvorfor du skifter alle de tegn ud. Hvis du vil udskrive HTML som kode, kan du nøjes med at skifte < med &lt;  =)

Derudover kan du gøre sådan:


function html2entities(){
    var re=/(?:[<>"'&])|(?:\:\))|(?:;\))|(?:\:\()/g
    for (i=0; i<arguments.length; i++)
    arguments[i].value=arguments[i].value.replace(re, function(m){return oReplace[m]})
}
var oReplace = {
    "<": "& lt;",
    ">": "& gt;",
    "\"": "& quote;",
    "'": "& #039;",
    "&": "& amp;",
    ":)": "<img src='smiley_plain.png' alt=''>",
    ";)": "<img src='smiley_winky.png' alt=''>",
    ":(": "<img src='smiley_frown.png' alt=''>"
};

Avatar billede olebole Juniormester
16. september 2009 - 23:42 #4
Pludselig får jeg en grufuld isnen ned ad ryggen og øjenbrynene er ved at skubbe brillerne ud over næsen!  =8-O

Du lægger vel ikke resultatet direkte i en database ... vel?  :)
Avatar billede maskso Nybegynder
17. september 2009 - 00:20 #5
Tak for det :-)

Jeg skriver det ikke i en database, men i en midlertidig txt fil. Det er også derfor jeg er nød til have " og ' osv. med.

Post et svar.
Avatar billede olebole Juniormester
17. september 2009 - 00:50 #6
Du får lige en forklaring  =)

De tre smilies med et 'eller' tegn (den lodrette streg, kaldet en pibe) imellem ser sådan ud:

(?:\:\))|(?:;\))|(?:\:\()

En smiley begynder altid med (?: og slutter med ).

Nogle tegn har specielle betydninger i RegExp og escapes derfor med en foranstående backslash. Det gælder f.eks, hvis dine smilies indeholder parentesbegynd og -slut (både almindelige runde, firkantede og krøllede). Det gælder også punktum, kolon, slash, backslash, spørgsmålstegn, pibe, m.fl.
Avatar billede olebole Juniormester
17. september 2009 - 00:50 #7
;o)
Avatar billede olebole Juniormester
18. september 2009 - 23:33 #8
Tak for points  =)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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