Philippé: Reguläre Ausdrücke: HTML -> ubb-Tags

Hallo,

ich habe folgenden Code gefunden, um in PHP die ubb-Tags in einem Text in HTML-Codes umzusetzen:

function ubb($text) {
        $tag['img'] = array('open'=>'<img src="','close'=>'">');
        $tag['b']   = array('open'=>'<b>','close'=>'</b>');
        $tag['i']   = array('open'=>'<i>','close'=>'</i>');
        $tag['u']   = array('open'=>'<u>','close'=>'</u>');
        $tag['url'] = array('open'=>'<a href="','close'=>'">\1</a>');

$stag['br'] = array('tag'=>'<br />');
        $stag['hr'] = array('tag'=>'<hr />');

foreach($tag as $tagname=>$replace) {
            $tagend = preg_replace('/\W/Ui','', $tagname);
            $text   = preg_replace("|[$tagname](.*)[/$tagend]|Ui","$replace[open]\1$replace[close]", $text);
        }

foreach($stag as $tagname=>$replace) {
            $text = preg_replace("|[$tagname]|Ui","$replace[tag]",$text);
        }

return $text;
    }

Funktioniert soweit wunderbar.
Mein Problem ist, dass ich mich kaum mit Regulären Ausrücken auskenne.
Jetzt bräuchte ich eine Funktion, die mir aus HTML-Tags ubb-Tags macht. D.h. aus <br /> wird [br]. Ich habe versucht, die ganze Sache umzudrehen, was aber nicht so ganz klappt. Z.B. funktioniert es mit dem XHTML-Schrägstrich wie z.B. in <hr /> nicht, da dort ein Leerzeichen enthalten ist.

Könnte mir da jemand auf die Schnelle helfen und ein Beispiel aufzeigen, wie ich es umwandeln kann?

Danke schon einmal im Voraus.

MfG

  1. Hi,

    Für dein sollte man lediglich die Logik im preg_replace() umdrehen müssen:

    ---
    $text = preg_replace("|$replaceopen$replace[close]|Ui","[$tagname]\1[/$tagname]", $text);

    bzw.

    $text = preg_replace("|$replace[tag]|Ui","[$tagname]",$text);
    ---

    ungetestet.

    Gruß,
    Andreas.