- PHP Manual
- String-Funktionen
- Entfernt HTML- und PHP-Tags aus einem String
strip_tags
(PHP 4, PHP 5, PHP 7, PHP 8)
strip_tags — Entfernt HTML- und PHP-Tags aus einem String
Beschreibung
$string
, array|string|null $allowed_tags
= null
): 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().
Parameter-Liste
-
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>');
?>
Rückgabewerte
Gibt die reduzierte Zeichenkette zurück.
Changelog
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.
|
Beispiele
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>
Anmerkungen
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.