phillip: bbcode php highlight

hallo!

ich bastel gerade an meinem bbcode.
über den bbcode

[php] <?php echo $testvar; ?> [/php]

lasse ich den php quellcode farblich ausgeben. das umgewandelte sieht so aus:

<code><span style="color: #000000">
 <span style="color: #007700"><?</span><span style="color: #0000BB">php </span><span style="color: #007700">echo </span><span style="color: #0000BB">$testvar</span><span style="color: #007700">; </span><span style="color: #0000BB">?></span> </span>
</code>

generiert wird das ganze über

$text = preg_replace_callback ("~[PHP](.*)[/PHP]~Uism","highlight",$text);

function highlight($php)
 {
  return highlight_string($php[1], true);
 }

das funktioniert also alles soweit wunderbar. nun möchte ich das ganze jedoch auch zurückverwandeln können. also von html in bbcode zurück. zuerst dachte ich ich mach das so:

$text = preg_replace ("~<code>(.*)</code>~Uism", "[php]\1[/php]", $text);

allerdings ensteht dann folgendes:

[php]<span style="color: #000000">
 <span style="color: #007700"><?</span><span style="color: #0000BB">php </span><span style="color: #007700">echo </span><span style="color: #0000BB">$testvar</span><span style="color: #007700">; </span><span style="color: #0000BB">?></span> </span>
[/php]

ich muss also irgendwie die ganzen spans und so wegbekommen :)..hmm ich hoffe jemand hat eine idee wie ich das anstellen kann.

vielen dank,
phillip

  1. Hallo Phillip,

    wieso willst du denn das ganze zweimal umwandeln?
    ich nehme an, das soll für eine Art Forum sein, bei dem man seine Posts bearbeiten können soll und dafür wieder den BBcode braucht.
    Falls dem so ist, speichere doch in der Datenbank einfach die Eingabe des Benutzers (also die Variante mit BBcode) und wandle das dann jedes mal beim Ausgeben um in HTML-Code. Auf diese Weise musst du das nicht wieder extra umwandlen.

    Gruß,
    Günther

    1. wieso willst du denn das ganze zweimal umwandeln?
      ich nehme an, das soll für eine Art Forum sein, bei dem man seine Posts bearbeiten können soll und dafür wieder den BBcode braucht.
      Falls dem so ist, speichere doch in der Datenbank einfach die Eingabe des Benutzers (also die Variante mit BBcode) und wandle das dann jedes mal beim Ausgeben um in HTML-Code. Auf diese Weise musst du das nicht wieder extra umwandlen.

      ... stimmt danke :)