Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript]Wyrażenia regularne - usuwanie śmieciowego kodu
Dapi
post
Post #1





Grupa: Zarejestrowani
Postów: 186
Pomógł: 13
Dołączył: 7.08.2009

Ostrzeżenie: (0%)
-----


Witam.
Robię na własny użytek prosty edytorek WYSIWYG. Po wklejeniu do niego tekstu z worda, wkleja się mnóstwo śmieciowego kodu.
przykładowy fragment:
Cytat
<!--[if gte mso 9]><xml> <o:OfficeDocumentSettings> <o:AllowPNG/> </o:OfficeDocumentSettings> </xml><![endif]--> <p class="MsoNormal">aaaaaaaaaaaaaaa</p>


Na dobrą sprawę powinien zostać tu tylko znacznik <p>, resztę można usunąć.
Łatwo powiedzieć, trudniej zrobić (IMG:style_emoticons/default/wink.gif)
Z wyrażeniami regularnymi jakoś mi nie po drodze, oporny jestem na nie, chociaż staram się.

Mam taki kodzik:
Kod
string.replace(/(<!--\[if gte mso [0-9]\]>.*<!\[endif\]-->)/gi,'')

Ale nie działa. Problemem są "<" pomiędzy komentarzami. jeśli by je usunąć wszystko działa.

Podpowiedzcie proszę, jak to powinno wyglądać (IMG:style_emoticons/default/wink.gif)

Pozdrawiam.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
kamil4u
post
Post #2





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

Ostrzeżenie: (0%)
-----


Problemem jest to, że nie czytasz dokumentacji (IMG:style_emoticons/default/smile.gif)

replace tylko zwraca nową wartość, ale nie modyfikuje starej:
Kod
<script>

string = '<!--[if gte mso 9]><xml> <o:OfficeDocumentSettings> <o:AllowPNG/> </o:OfficeDocumentSettings> </xml><![endif]--> <p class="MsoNormal">aaaaaaaaaaaaaaa</p>';

string = string.replace(/(<!--\[if gte mso [0-9]\]>.*<!\[endif\]-->)/gi,'');
alert( string );
</script>
Go to the top of the page
+Quote Post
Dapi
post
Post #3





Grupa: Zarejestrowani
Postów: 186
Pomógł: 13
Dołączył: 7.08.2009

Ostrzeżenie: (0%)
-----


Aż tak źle ze mną nie jest (IMG:style_emoticons/default/wink.gif) )

Kod
$('.editor').text($('.editor').html().replace(/(<!--\[if gte mso [0-9]\]>.*<!\[endif\]-->)/gi,'')

tak to w skrócie wygląda.

powyższy kod zadziała, jeśli $('.editor').html() przyjmuje wartość niezawierającą innych tagów (a konkretnie znaków "<")
Go to the top of the page
+Quote Post
kamil4u
post
Post #4





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

Ostrzeżenie: (0%)
-----


Coś mi się wydaje, że metoda html() w jQuery psuje nam zabawę.

Wyalertuj to: $('.editor').html()
i to: $('.editor').get(0).innerHTML;

i wklej tu.

Ten post edytował kamil4u 18.11.2012, 21:59:15
Go to the top of the page
+Quote Post
Dapi
post
Post #5





Grupa: Zarejestrowani
Postów: 186
Pomógł: 13
Dołączył: 7.08.2009

Ostrzeżenie: (0%)
-----


Też o tym myślałem, ale nie, to nie to. Wynik obu alertów jest dokładnie taki sam:

Kod
<!--[if gte mso 9]><xml> <o:OfficeDocumentSettings> <o:AllowPNG></o:AllowPNG> </o:OfficeDocumentSettings> </xml><![endif]--> <p class="MsoNormal">aaaaaaaaaaaaaaa</p>

Kod
<!--[if gte mso 9]><xml> <o:OfficeDocumentSettings> <o:AllowPNG></o:AllowPNG> </o:OfficeDocumentSettings> </xml><![endif]--> <p class="MsoNormal">aaaaaaaaaaaaaaa</p>




Edit:
Alerty dają ten sam wynik, ale zamiana:
Kod
$('.editor').text($('.editor').html().replace(/(<!--\[if gte mso [0-9]\]>.*<!\[endif\]-->)/gi,'')

na
Kod
$('.editor').text($('.editor').get(0).innerHTML.replace(/(<!--\[if gte mso [0-9]\]>.*<!\[endif\]-->)/gi,'')

pomogła.
Dzięki wielkie (IMG:style_emoticons/default/smile.gif)

Ten post edytował Dapi 18.11.2012, 22:08:13
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 18.09.2025 - 08:49