strip_tags: php-tag muss drin bleiben

Sladda

Mitglied
Hi !

Habe ein blödes Problem: Ich will aus einem html-php-Text alle HTML-Tags rausfiltern, was mit strip_tags ja wunderbqar funktioniert.
Allerdings MUSS das php-tag (<?php ) drin bleiben im string.
die ausnahme-parameter von strip_tags erlauben das leider nicht:
HTML-Kommentare und PHP-Tags werden ebenfalls entfernt. Dieses Verhalten ist hartkodiert und kann nicht mittels allowable_tags verändert werden.

:(
Weiß jemand Rat ?
Vielen Dank!
Grüße
Sladda
 
Ersetze die PHP Tags zwischenzeitlich mit einer beliebigen Zeichenkette die nicht entfernt wird.

Beispiel

PHP:
<?php
$str = '<?php echo "<html>test</html>"; ?>';

$str = str_replace('<?php', '##foo#', $str);
$str = str_replace('?>', '#foo##', $str);

$str = strip_tags($str);

$str = str_replace('##foo#', '<?php', $str);
$str = str_replace('#foo##', '?>', $str);
?>
 
Ich würde vermutlich Folgendes machen:
PHP:
$str = htmlspecialchars_decode(strip_tags(preg_replace('/&lt;((?!\?(?:php)?).+?(?!\?))&gt;/', '<$1>', htmlspecialchars($str))));
Aber wozu brauchst du das überhaupt?
 
Zurück