Avatar billede weiland Nybegynder
23. april 2005 - 15:46 Der er 6 kommentarer og
1 løsning

fjerne fontface-tags

Følgende kode fjerner de fleste word-generede tags fra en tekst-streng. Men den fjerner ikke fontface-tags. Når den får

<FONT face="Times New Roman" color=#000000 size=3>Hello world</FONT>

skal den altså returnere

<FONT color=#000000 size=3>Hello world</FONT>

Er det muligt? (Jeg kan ikke finde ud af det :-)


function doCleanCode(code) {
        // removes all Class attributes on a tag eg. '<p class=asdasd>xxx</p>' returns '<p>xxx</p>'
        code = code.replace(/<([\w]+) class=([^ |>]*)([^>]*)/gi, "<$1$3")

        // removes all style attributes eg. '<tag style="asd asdfa aasdfasdf" something else>' returns '<tag something else>'
        code = code.replace(/<([\w]+) style="([^"]*)"([^>]*)/gi, "<$1$3")
        // gets rid of all xml stuff... <xml>,<\xml>,<?xml> or <\?xml>
        code = code.replace(/<\\?\??xml[^>]>/gi, "")
        // get rid of ugly colon tags <a:b> or </a:b>
        code = code.replace(/<\/?\w+:[^>]*>/gi, "")
        // removes all empty <p> tags
        code = code.replace(/<p([^>])*>(&nbsp;)*\s*<\/p>/gi,"")
        // removes all empty span tags
        code = code.replace(/<span([^>])*>(&nbsp;)*\s*<\/span>/gi,"")

        return code
    }
Avatar billede Slettet bruger
23. april 2005 - 19:52 #1
/FACE=".+"/

vil den ikke finde
FACE="(en masse)"

?
Avatar billede roenving Novice
24. april 2005 - 12:35 #2
Prøv f.eks.

code = code.replace(/<font([^>]*?)(face=".*")/gi, "<font$1");
Avatar billede roenving Novice
24. april 2005 - 12:37 #3
-- og måske skulle man også lade gåseøjnene være optionale, og teksten inde i face-attributten non-greedy:

code = code.replace(/<font([^>]*?)(face="?.*?"?)/gi, "<font$1");
Avatar billede weiland Nybegynder
24. april 2005 - 13:39 #4
Med den anden løsning oplever jeg desværre, at resultatet bliver

<FONT color=#000000 size=3 Roman? New Times>Hello World</FONT>

- men jeg hælder mere og mere til den løsning, at HELE font-taget skal fjernes. Hvordan gør man det?
Har forsøgt lidt med

code = code.replace(/<\\?\??font[^>]>/gi, "")

- men det kommer jeg ikke langt med :-)
Avatar billede weiland Nybegynder
24. april 2005 - 13:44 #5
ahhhaa, med lidt hjælp fra http://eksperten.dk/spm/510229 (roenving) fandt jeg det:

code = code.replace(/<\/?font[^>]*>/gi, "")

- så et svar fra dig, roenving :-)
Avatar billede roenving Novice
24. april 2005 - 13:50 #6
-- ja det er stjernen, du mangler !-)

-- og jeg måtte da lige teste mig igennem nogle eksempler, og den kan blive rigtig irriterende, men denne virker:

var x = '<FONT face="Times New Roman" color=#000000 size=3>Hello world</FONT><font face=arial>Txt</font>';
x = x.replace(/<font([^>]*?)(face="[^"]*?")/gi, "<font$1");
alert(x.replace(/<font([^>]*?)(face=[^\s>]+)/gi, "<font$1"));

Velbekomme '-)
Avatar billede roenving Novice
24. april 2005 - 13:56 #7
-- og tak for point ;~}
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