dingo: regulärer ausdruck, korrekte verschachtelung

Beitrag lesen

  
  $pattern = array(  
   '/\[b\](.*?)\[\/b\]/is',  
   '/\[i\](.*?)\[\/i\]/is',  
  );  
  $replace = array(  
   '<strong>$1</strong>',  
   '<em>$1</em>',  
  
  );  
  
  $str = preg_replace($pattern, $replace, $str);  

habe oberen code zum ausprobieren - bei konstrukten wie das hier zb

[b]conse[i]ctetuer[/b] dolor[/i]

bekomme ich natürlich ungültige verschachtelungen zusammen - hab mir jetzt schon ein paar fertige bbcode parser klassen angesehen aber da blicke ich nicht durch - ich versuche mir grade reguläre ausdrücke beizubringen und möchte das eben gleich anhand bb code erlernen - hat jemand einen tipp für mich, wie man da herangeht?