Regex HTML Tags rausfiltern

J

Jonny9904

Gast
Hallo Community,


ich hab eine Frage.

Und zwar möchte ich folgendes machen.

Ich hab HTML Tags:
HTML:
<P><B>Test</B><BR>ads</B><BR>wqwed <BR><BR><B>fsdafda</B><BR>dafdafdsaf<BR><BR><B>test</B><BR>dafadsfasd<BR><BR><B>Head.</B><BR>esbes</B><BR>poipda<SPAN style="mso-ansi-language: EN-US" lang=EN-US><FONT face=Calibri>Hallo dtset ad seara</FONT></SPAN></P>
<P><SPAN style="mso-ansi-language: EN-US" lang=EN-US></SPAN>&nbsp;</P>
<P><A href="http://www.golem.de/1304/sp_98574-43755-i_rc.jpg">http://www.golem.de/1304/sp_98574-43755-i_rc.jpg</A></P>
<P>&nbsp;</P>
<P>&nbsp;</P><FONT face=Calibri>da</FONT>fasdfasd

Ich möchte dass mit Regex alle HTML Tags entfernt werden, außer die auf ner "WhiteList" (die möchte ich selbst dann festlegen).

Also bsp. P, B und BR sollen bleiben.

Alle anderen HTML Tags sollen raus, aber der Inhalt dazwischen nicht.

Code:
<[^()|()>]*>
jetzt werden alle HTML Tags markiert
Code:
<[^(P)|(^(B)|(BR)>]*>
jetzt werden alle markiert wo P und B vorkommt.

Ich will jetzt aber auch Span raushaben ! Wie mach ich das dass der P als einzelnes HTML Tag erkennt sodass er Span weiterhin erkennt ?

und wie geht das besser mit der WhiteList ?


Danke !
 
Vergiss es, so etwas selbst zu bauen. Es gab viele solche Projekte, die meisten waren unsicher.

Im PHP-Umfeld ist es sogar so, dass alle Projekte, die Tags rausfiltern wollen, unsicher sind. Sicher ist da nur der HtmlPurifier, der den ganzen HTML-Code nimmt, zerlegt und komplett neu anhand der Whitelist wieder aufbaut. Dadurch kann kein böser Code durchschlupfen, denn sollte HtmlPurifier ihn nicht verstehen (ein ganz ausgelügelter Bug im HTML Parser irgendeines Browsers), geht er beim zerlegen einfach verloren.
 
Also ich hab jetzt auch dass die WhiteList besser drin ist ?


Code:
<?!*(P|B|/P|/B|BR|/BR)>
Jetzt werden alle markiert die in der Whitelist stehen.

Wie mach ich das dass alle in den Tags markiert werden, die NICHT auf der Whitelist stehen ?



Ich weiss dass es nicht die beste Lösung ist, aber ich muss es selbst bauen ;)
 
Nein es steckt C# dahinter.

Sinn dahinter ist dass ich als Azubi mich in Regex einarbeiten soll.

Also vorgabe ist Regex benutzen
 
Also hab das Problem jetzt so geloest:

Code:
string[] whiteList = new string[] { "P", "B", "BR" };            // Format tags who are allowed

string item = String.Join("+", whiteList);

string temp = @"<\s*\/?\s*[^" + item + "|/" + item + @"]\s*.*?>";   // highlight all tags without items from whitelist


string html = Regex.Replace(input, temp, "", RegexOptions.IgnoreCase);

Nur falls es jemand interessiert ;)
 
Zurück
Oben