Soso ...
nach ein paar weiteren Stunden angestrengten Nachdenkens freue ich mich die absolut simple Lösung zu präsentieren ... *grrrrrrrrr*
$text = "[x:xxx]hiernix[fett:fettfett[kursiv:kursivvvv][link(http://www.ilo.de):einlink]fett]wiedernix";
#----------------------------------------------------------------
while(preg_match("/([[^[^]]*])/", $text))
{ $t = preg_split("/([[^[^]]*])/", $text, -1, PREG_SPLIT_DELIM_CAPTURE);
for($i=0; $i<count($t); $i++)
{
$t[$i] = preg_replace("/[fett:(.*)]/i", "<b>\1</b>", $t[$i]);
$t[$i] = preg_replace("/[kursiv:(.*)]/i", "<i>\1</i>", $t[$i]);
$t[$i] = preg_replace("/[link\s?((.*))\s?:(.*)]/i", "<a href="\1">\2</a>", $t[$i]);
$t[$i] = preg_replace("/[x:(.*)]/i", "X\1X", $t[$i]);
}
$text = implode("", $t);
}
#----------------------------------------------------------------
echo $text;
Ergibt:
XxxxXhiernix<b>fettfett<i>kursivvvv</i><a href="http://www.ilo.de">einlink</a>fett</b>wiedernix
So wie es sein soll ...
Ciao,
Harry
(sauer, daß er dafür solange gebraucht hat)