Avatar billede and_ Nybegynder
30. juli 2004 - 10:37 Der er 9 kommentarer og
2 løsninger

Problem med at lave en "søg/erstat"-ekspression

Hej :)

Jeg har en side som er pastet ind fra word ind i en wysiwyg-editor. Word laver som bekendt en masse slamkode.....
Jeg er ved at lave en "hård formattering" af koden, men jeg kan iikke rigtig få det til at virke....

Al html skal strippes undtagen breaks...

Jeg har få det lavet indtil videre til at </p> og <br> bliver erstattet med #nylinie# (denne kan selvfølgelig ændres, hvis i synes...) og derefter skal den strippe alt html og erstatte #nylinie# med <br>

Teksten som skal formateres:

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">Gdffgg</P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">Df</P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">Gfddfgdsfsfsfsfg e ghg ffgh</P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="mso-spacerun: yes">&nbsp;</SPAN>Fg</P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="mso-spacerun: yes">&nbsp;</SPAN>H</P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">Fgh rthtrh rt hørtklhktrw</P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">Lgåhk</P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">Sflhmdfæh,lfdhwrt</P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">Hrt</P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">Dette er en <U>test side</U> af de forskellige styles som <SPAN style="FONT-SIZE: 10pt">skodword klavewr….</SPAN> *Detkæhgdf</P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">Bhfgjklæghdf</P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">¨hftkælhdfkæhlrkåpherå</P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">¨tywey</P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">¨rtyhrthtr ,hrt ,mhfggh sdf g,mwer <I style="mso-bidi-font-style: normal"><SPAN style="FONT-SIZE: 24pt">rfqfd, gsrtm</SPAN></I>, ghgerm, ym,4,m n,m<SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>ng,.gdfnmh.fgbmælfkdmhæwrlmæyl ew klghterlæk yælwkg jlksdr gelkjtewojtopewjgopwe<B style="mso-bidi-font-weight: normal"><I style="mso-bidi-font-style: normal">roipjtpoi5</I></B>wji tpow35¨kp totqwj tpj gwetklwægj kshgoisdhyoiåkg wkløej yøow34jyøå 35jn <B style="mso-bidi-font-weight: normal"><I style="mso-bidi-font-style: normal"><U><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: 'Arial Unicode MS'">tæwkl4qh øty62qjøppt</SPAN></U></I></B> op34quj 6tt93q4tui9045uiy</P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">g rt</P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">gstå¨phwtr ¨åhrt</P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">bhtfsjklksfthkoostfhtkåphs r</P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">htr </P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">rhtt</P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">hrstælæhtejkoph strø pæ kpshtfkåphdfkpå</P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><o:p>&nbsp;</o:p></P>
<TABLE class=MsoTableGrid style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid windowtext .5pt; mso-yfti-tbllook: 480; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext" cellSpacing=0 cellPadding=0 border=1>
<TBODY>
<TR style="mso-yfti-irow: 0">
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 122.2pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt" vAlign=top width=163>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><o:p>&nbsp;</o:p></P></TD>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 122.2pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt" vAlign=top width=163>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">fdsfsd</P></TD>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 122.25pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt" vAlign=top width=163>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><o:p>&nbsp;</o:p></P></TD>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 122.25pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt" vAlign=top width=163>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><o:p>&nbsp;</o:p></P></TD></TR>
<TR style="mso-yfti-irow: 1">
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 122.2pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=163>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><o:p>&nbsp;</o:p></P></TD>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 122.2pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=163>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><o:p>&nbsp;</o:p></P></TD>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 122.25pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=163>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><o:p>&nbsp;</o:p></P></TD>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 122.25pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=163>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">fd<B style="mso-bidi-font-weight: normal">sf</B>sd</P></TD></TR>
<TR style="mso-yfti-irow: 2; mso-yfti-lastrow: yes">
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 122.2pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=163>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><o:p>&nbsp;</o:p></P></TD>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 122.2pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=163>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">dsf</P></TD>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 122.25pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=163>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><o:p>&nbsp;</o:p></P></TD>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 122.25pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=163>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><o:p>&nbsp;</o:p></P></TD></TR></TBODY></TABLE>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">dfsdfsddsfs</P>
Avatar billede and_ Nybegynder
30. juli 2004 - 10:42 #1
Forresten.... Reg.exp'en skal baseres på Javascript ;) hehe
Avatar billede Slettet bruger
30. juli 2004 - 14:13 #2
Jeg er ikke en haj til javascript, men her er en regexp, der skulle kunne fange alle </p> og <br> så du kan erstatte dem med #nylinie#:

<(/P|BR)>

Derefter kan du med denne fange alle tags:

<[^>]*>
Avatar billede and_ Nybegynder
30. juli 2004 - 14:28 #3
Jeg kan godt erstatte dem, men det er at få den erstattet tilbage igen der er problemet....
Avatar billede Slettet bruger
30. juli 2004 - 14:31 #4
Så er det jo bare at erstatte

#nylinie# med <br>

Det burde kunne lade sig gøre med kode, der til forveksling ligner de andre erstatninger.

Muligvis har #-tegnet speciel betydning. I så fald kan du bruge et andet i stedet. Måske § eller @. Eller du kan prøve at escape det med en \.
Avatar billede and_ Nybegynder
02. august 2004 - 10:49 #5
okay.... Vi prøver igen :)
jeg sucks virkelig til det her....

Den ovenstående tekst er copy/pastet ind fra word af....
Word laver en masse gejl som får en side/editoren til at fejle...

Jeg forsøger at lave en hård formattering. Dvs at alle html-tags skal fjernes, så det kun er den rene tekst der står tilbage...

Det eneste der ikke skal fjernes er linieskift...

I teksten skal det således være </p> og <br> (kan både være med store og små bogstaver)..... Disse tags skal laves om til <br> (her tænker jeg på </p>)....
Avatar billede and_ Nybegynder
02. august 2004 - 11:37 #6
hmmm... er nået så langt her, men den stripper alligevel alt... herunder også [nylinie]

var skodkode = frames.editor.document.body.innerHTML;
var AndensKode = "";
               
AndensKode = skodkode.replace(/<(\/P|BR)>/gi, "[nylinie]");
alert(AndensKode);
AndensKode = skodkode.replace(/<[^>]*>/g, "");           
//AndensKode = strHTML.replace(/<.*?>/g, "");           
frames.editor.document.body.innerHTML = AndensKode;
Avatar billede and_ Nybegynder
02. august 2004 - 12:01 #7
har fundet fejlen ;)

Måske jeg skulle sørge for at arbejde videre med den samme string, istedet for at lave den på forskellige variabler.... hmm fjols ;) hehe

AndensKode = skodkode.replace(/<(\/P|BR)>/gi, "[nylinie]");
AndensKode = skodkode.replace(/<[^>]*>/g, ""); 

Den skal jo selvfølgelig hedde:

AndensKode = skodkode.replace(/<(\/P|BR)>/gi, "[nylinie]");
AndensKode = AndensKode.replace(/<[^>]*>/g, "");
Avatar billede and_ Nybegynder
02. august 2004 - 12:01 #8
sandbox... smider du ikke lige et svar, så du kan få lidt point...
Avatar billede and_ Nybegynder
02. august 2004 - 12:19 #9
Til jer som læser det her på et senere tidspunkt, ser den færdige kode således ud:

var skodkode = frames.editor.document.body.innerHTML;
               
skodkode = skodkode.replace(/<(\/P|BR)>/gi, "[nylinie]");
skodkode = skodkode.replace(/<[^>]*>/g, "");           
skodkode = skodkode.replace(/\[nylinie\]/g, "<br>");
frames.editor.document.body.innerHTML = skodkode;
Avatar billede Slettet bruger
03. august 2004 - 03:03 #10
Undskyld forsinkelsen. Jeg var lidt hjemmefra.
Avatar billede and_ Nybegynder
03. august 2004 - 11:00 #11
Helt iorden ;)
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