Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Wyrażenia regularne - usuwanie śmieciowego kodu
Forum PHP.pl > Forum > Przedszkole
Dapi
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ć 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ć wink.gif

Pozdrawiam.
kamil4u
Problemem jest to, że nie czytasz dokumentacji 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>
Dapi
Aż tak źle ze mną nie jest 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 "<")
kamil4u
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.
Dapi
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 smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.