W3docs

strip_tags()

Die PHP-Funktion strip_tags() entfernt HTML- und PHP-Tags aus einem String und hinterlässt nur den reinen Textinhalt.

Einführung

Die Funktion strip_tags() in PHP entfernt HTML-, XML- und PHP-Tags aus einem String und hinterlässt nur den reinen Textinhalt. Sie wird häufig verwendet, um vom Benutzer eingereichte oder Rich-Text-Inhalte in sauberen, tagfreien Text umzuwandeln — zum Beispiel beim Erstellen einer Kurzzusammenfassung, eines E-Mail-Texts im Nur-Text-Format oder einer sicher speicherbaren Version eines Kommentars.

Dieser Artikel behandelt die Syntax, sowohl erforderliche als auch optionale Parameter, praktische Beispiele, die in PHP 7.4 hinzugefügte Array-Form sowie die wichtigen Sicherheitshinweise, die Sie kennen müssen, bevor Sie sich auf diese Funktion verlassen.

Die Funktion strip_tags() verstehen

Die Funktion strip_tags() durchsucht den Eingabe-String und löscht alles, was wie ein HTML/XML-Tag aussieht (Text zwischen < und >), sowie PHP-Tags (<?php ... ?>). Der Text, der zwischen den Tags steht, bleibt erhalten. Die Syntax lautet wie folgt:

Die PHP-Syntax von strip_tags()

strip_tags(string $string, array|string|null $allowed_tags = null): string

Hier ist, was jeder Parameter bewirkt:

  • $string — der Eingabe-String, aus dem Tags entfernt werden sollen. Dies ist der einzige erforderliche Parameter.
  • $allowed_tags (optional) — eine Liste von Tags, die nicht entfernt werden sollen. Sie können diese als String von Tag-Namen ("<a><b>") oder seit PHP 7.4 als Array (["a", "b"]) übergeben. Wenn weggelassen (oder null), werden alle Tags entfernt.

Die Funktion gibt den resultierenden String zurück, bei dem alle nicht erlaubten Tags entfernt wurden. Sie verändert niemals den ursprünglichen String.

Hinweis: Kommentare (<!-- ... -->) und <?php ... ?>-Blöcke werden immer entfernt und können nicht zur Erlaubnisliste hinzugefügt werden.

Verwendungsbeispiel

Schauen wir uns ein Beispiel an, um die Verwendung der Funktion strip_tags() in PHP zu verstehen:

Beispiel für PHP strip_tags()

php— editable, runs on the server

Im obigen Beispiel verwenden wir die Funktion strip_tags(), um alle HTML- und PHP-Tags aus dem String zu entfernen. Der resultierende String Hello WorldThis is a paragraph. wird dann mit der echo-Anweisung auf dem Bildschirm ausgegeben.

Den Parameter $allowable_tags verwenden

Schauen wir uns ein weiteres Beispiel an, um zu verstehen, wie der Parameter $allowable_tags mit der Funktion strip_tags() verwendet werden kann:

Wie wird PHP strip_tags() verwendet?

php— editable, runs on the server

Im obigen Beispiel verwenden wir die Funktion strip_tags(), um HTML- und PHP-Tags aus dem String zu entfernen. Wir geben das Tag <a> als erlaubtes Tag über den Parameter $allowed_tags an. Infolgedessen entfernt die Funktion die Tags <h1> und <p>, bewahrt jedoch deren Textinhalt, während das Tag <a> und sein Inhalt erhalten bleiben. Der resultierende String Hello WorldThis is a paragraph.<a href='https://www.example.com'>Example link</a> wird dann mit der echo-Anweisung auf dem Bildschirm ausgegeben.

Erlaubte Tags als Array übergeben (PHP 7.4+)

Seit PHP 7.4 können Sie die erlaubten Tags als Array statt als String übergeben. Dies ist einfacher zu lesen und weniger fehleranfällig als das Erstellen eines Strings im Stil "<a><b>":

<?php

$str = "<p>Hi</p><b>bold</b><i>italic</i>";

// String form (any PHP version)
echo strip_tags($str, "<p><b>"); // <p>Hi</p><b>bold</b>italic

echo "\n";

// Array form (PHP 7.4 and newer) — equivalent result
echo strip_tags($str, ["p", "b"]); // <p>Hi</p><b>bold</b>italic

Beide Aufrufe behalten die Tags <p> und <b> und entfernen das Tag <i>, wobei in jeder Zeile <p>Hi</p><b>bold</b>italic ausgegeben wird.

Hinweis: strip_tags() validiert kein HTML. Es entfernt lediglich Tags basierend auf der angegebenen Erlaubnisliste, was möglicherweise fehlerhaftes oder nicht geschlossenes Markup in der Ausgabe hinterlässt.

Sicherheit: strip_tags() reicht nicht aus, um XSS zu verhindern

Ein weit verbreitetes Missverständnis ist, dass strip_tags() Benutzereingaben sicher zur Anzeige macht. Das tut es nicht. Die Funktion entfernt nur vollständige Tags — sie bereinigt nicht die Attribute von Tags, die Sie erlauben:

<?php

$input = '<a href="javascript:alert(1)" onclick="steal()">click me</a>';

// The <a> tag survives, attributes and all
echo strip_tags($input, "<a>");
// <a href="javascript:alert(1)" onclick="steal()">click me</a>

Die gefährlichen Attribute href und onclick werden ungehindert durchgelassen. Für Ausgaben, die als HTML gerendert werden sollen, verwenden Sie htmlspecialchars(), um den Text zu escapen, oder einen dedizierten HTML-Sanitizer wie HTML Purifier, wenn Sie sicher einige Markup-Elemente erlauben möchten. Verwenden Sie strip_tags(), um reinen Text zu erzeugen, nicht um sicheres HTML zu erzeugen.

Häufige Anwendungsfälle

  • Nur-Text-Vorschauen: einen tagfreien Auszug eines Artikels für Suchergebnisse oder Listenansichten erstellen.
  • Nur-Text-E-Mail-Texte: HTML entfernen, bevor die Textalternative einer E-Mail versendet wird.
  • Bereinigung von Benutzereingaben, die niemals Markup enthalten sollten, wie ein Anzeigename oder eine Suchanfrage.

Verwandte Funktionen

  • htmlspecialchars()<, >, & und Anführungszeichen escapen, damit Markup als Text dargestellt wird, anstatt entfernt zu werden.
  • htmlentities() — alle anwendbaren Zeichen in HTML-Entitäten umwandeln.
  • trim() — umgebende Leerzeichen entfernen, oft in Kombination mit strip_tags() verwendet, um das Ergebnis zu bereinigen.

Fazit

Die Funktion strip_tags() ist ein unkompliziertes Werkzeug zum Extrahieren von reinem Text aus Strings, die HTML- oder PHP-Markup enthalten. Übergeben Sie eine Erlaubnisliste (als String oder in PHP 7.4+ als Array), wenn Sie bestimmte Tags behalten möchten, und denken Sie daran, dass sie nur Tags entfernt — sie bereinigt keine Attribute, daher ist sie kein Ersatz für ordnungsgemäßes Ausgabe-Escaping. Verwenden Sie sie zur Erzeugung von reinem Text, und greifen Sie auf htmlspecialchars() oder einen echten Sanitizer zurück, wenn Sie sicheres HTML benötigen.

Übung

Übung
Was ist der Zweck der Funktion strip_tags() in PHP?
Was ist der Zweck der Funktion strip_tags() in PHP?
Was this page helpful?