RegEx HTML Tags+INHALT entfernen

  • Themenstarter Themenstarter ReggaePanda
  • Beginndatum Beginndatum
Moin zusammen,

Wie wäre es ganz einfach mit strip_tags()? Die Funktion könnte das Problem ohne fehleranfällige reguläre Ausdrücke sofort lösen.

In den Comments stehen noch diverse Ansätze, wie man bestimmte Inhalte behalten kann.
 
Zuletzt bearbeitet:
Reguläre Ausdrücke sind eigentlich nicht fehleranfällig. Dafür aber strip_tags:
php.net hat gesagt.:
Warnung

Da strip_tags() HTML nicht wirklich validiert, kann es passieren, dass bei unvollständigen oder unkorrekten Tags mehr Text/Daten gelöscht werden als erwartet.
Warnung

Diese Funktion modifiziert keine Attribute bei Tags, die via allowable_tags erlaubt wurden, dies betrifft auch style und onmouseover Attribute, die ein böswilliger User verwenden kann, um einen Text zu posten, der von anderen Usern gesehen werden soll.
 
@timestamp

oh, hatte den Modifier s an, deswegen hats nicht funktioniert :|
die löscht sogar blöde <br> tags :) nr1 für mich ... das einfachste ist wohl oft das beste :D

@deepthroat

die Funktioniert auch klasse nur das die nicht richtig escaped war und ich hab noch ein kleines fragezeichen eingefügt.
@<(\S+)([^>]*\/>|.*?<\/\1\s*>)@is

@yaslaw
auch klasse aber ich habs lieber kompackt :)


Also nochmal an alle danke!
 
@timestamp

Zuverlässige HTML-Filterung geht weder mit regulären Ausdrücken noch mit strip_tags(), da HTML dafür (ob man es glaubt oder nicht) zu komplex ist-. Einzige Möglichkeit wirklich sicher HTML zu filtern sind Libraries wie z.B. HTML-Purifier. Falls man aber aus einem String das komplette HTML-Markup rausfiltern will, kann man strip_tags() nehmen, man darf nur keine Whitelist im zweiten Parameter angeben, dann ist es dautlich sicherer als ein Regex, die nie alle Möglichkeiten berücksichtigen kann, wie man HTML durchschleusen kann.
 
Zurück