(PHP 4, PHP 5, PHP 7, PHP 8)
strip_tags — Entfernt HTML- und PHP-Tags aus einem String
Diese Funktion versucht, einen String zurückzugeben, der die um alle
NULL-Bytes, HTML- und PHP-Tags reduzierte Version von
string
darstellt. Sie verwendet die gleiche Engine
zum Entfernen der Tags wie fgetss().
string
Die Eingabezeichenkette.
allowed_tags
Sie können den optionalen zweiten Parameter verwenden, um die Tags anzugeben, die nicht entfernt werden sollen. Diese werden entweder als String oder, von PHP 7.4.0 an, als Array angegeben. Dem Beispiel weiter unten kann das Format dieses Parameters entnommen werden.
Hinweis:
HTML-Kommentare und PHP-Tags werden ebenfalls entfernt. Dieses Verhalten ist hartkodiert und kann nicht mittels
allowed_tags
verändert werden.
Hinweis:
Da selbstschließende XHTML-Tags ignoriert werden, sollten nur nicht-selbstschließende Tags in
allowed_tags
verwendet werden. Um beispielsweise sowohl<br;>
als auch<br/>
zu erlauben, sollte folgendes verwendet werden:<?php
strip_tags($input, '<br>');
?>
Gibt die reduzierte Zeichenkette zurück.
Version | Beschreibung |
---|---|
8.0.0 |
allowed_tags ist jetzt nullable (akzeptiert den
NULL-Wert).
|
7.4.0 |
Der Parameter allowed_tags akzeptiert nun
alternativ ein Array.
|
Beispiel #1 strip_tags()-Beispiel
<?php
$text = '<p>Test-Absatz.</p><!-- Kommentar --> <a href="#fragment">Anderer Text</a>';
echo strip_tags($text);
echo "\n";
// <p> und <a> zulassen
echo strip_tags($text, '<p><a>');
// von PHP 7.4.0 an kann die vorherige Zeile wie folgt geschrieben werden:
// echo strip_tags($text, ['p', 'a']);
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
Test-Absatz. Anderer Text <p>Test-Absatz.</p> <a href="#fragment">Anderer Text</a>
Diese Funktion sollte nicht verwendet werden, um zu versuchen XSS-Attacken zu verhindern. Statt dessen sind geeignetere Funktionen wie htmlspecialchars() oder andere Mittel, abhängig vom Ausgabekontext, zu verwenden.
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.
Diese Funktion modifiziert keine Attribute bei Tags, die via
allowed_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.
Hinweis:
Tagnamen im Eingabe-HTML, die länger als 1023 Bytes sind, werden behandelt, als ob sie ungültig seien, unabhängig vom
allowed_tags
-Parameter.