Morgen. Ich hab grad ein recht unschönes Problem damit, BBCodes zu parsen.
Angenommen ich habe folgenden Text:
[/code]asdf
[/code]
Daraus soll jetzt folgendes werden:
<div class="box">
</div>
Wenn ich jetzt aber einfach sowas hier mache:
Code:
$text=preg_replace('#\['.$
bbcode["code"].'(=([^\]]*))?\](.*)\[/'.
$
bbcode["code"].'\]#ise', '$this->parsebbcode(\''.$
bbcode["code"].
'\', \''.$
bbcode["replacement"].'\', \'$3\', \'$2\')', $text);
Dann parst das Ding:
<div class="box">
[/code]asdf[code]
</div>
Wenn ich den Operator bei (.*) non-greedy mache, parst er so:
<div class="box">
asdf<div class="box">
Wie kann ich das so hinkriegen, wie ich es will? Und wie verhindere ich, dass ein innerhalb eines geparst wird?