BB-Code [html]...[/html] korrekt parsen?

Paula

Erfahrenes Mitglied
Servus,

ich möchte gerne den BB-Code [ html ]...[ /html ] bei mir implementieren.

Bisher gehe ich wie folgt vor (Auszug aus der Funktion parser(&$parsevar)):
Code:
$parsevar = htmlspecialchars( $parsevar, ENT_QUOTES );
..
$parsevar = preg_replace( "/\[b\](.*?)\[\/b\]/i", "<span style=\"font-weight:bold;\">$1</span>", $parsevar );
... etc pp

Ich habe es nun über den folgenden Weg versucht:
Code:
$parsevar = preg_replace( "/\[html\](.*?)\[\/html\]/i", unhtmlentities( "$1" ), $parsevar );
Dazu gehört folgende Funktion:
Code:
function unhtmlentities( $string ) {
    $string = str_replace( "&lt;", "<", $string );
    $string = str_replace( "&gt;", ">", $string );
    return $string;
}

Nur das klappt leider nicht, es wird auch keine Fehlermeldung oder sonstwas ausgespuckt. Nur es passiert leider nichts.

Weiß jemand Rat oder kennt jemand eine günstigere Alternative wie ich diesen BB-Code umwandle?
 
Der zu parsende String... enthält der Zeilenumbrüche?
Wenn ja , musst die zusätzlich zu "i" noch die Flag "s" setzen.... sonst findet dein Ausdruck nur Übereinstimmunngen innerhalb einer Zeile(s=dotall, der Punkt matcht damit alle Zeichen, auch den Zeilenumbruch... was er sonst nicht tun würde)
 
Quasi so:
Code:
$parsevar = preg_replace( "/\[html\](.*?)\[\/html\]/si", unhtmlentities( "$1" ), $parsevar );

Nur das funktioniert ebenfalls nicht.
 
Du musst noch zusätzlich die Flag "e" setzen, damit der PHP-Code in dem Replacement auch als solcher interpretiert wird.
Code:
$parsevar = preg_replace( "/\[html\](.*?)\[\/html\]/eis", "unhtmlentities( '$1' )", $parsevar );
 
Zurück