в phpBB (с UBB-тэгами), думаю, сделано все просто - прег-реплейсами, типа того:
$tags[] = array('search'=>"!\[I\](.*?)\[/I\]!im", 'replace'=>"<i>\\1</i>");
$tags[] = array('search'=>"!\[B\](.*?)\[/B\]!im", 'replace'=>"<b>\\1</b>");
...
foreach($tags as $a)
$text = preg_replace($a['search'],$a['replace'],$text);
но у тебя то вложенности надо учитывать...без рекурсии не обойтись, если юзать реги. В рамках твоей задачи то, для чего нужен UID в phpBB, вообще не важно.
$tags[] = array('search'=>"!\[I\](.*?)\[/I\]!im", 'replace'=>"<i>\\1</i>");
$tags[] = array('search'=>"!\[B\](.*?)\[/B\]!im", 'replace'=>"<b>\\1</b>");
...
foreach($tags as $a)
$text = preg_replace($a['search'],$a['replace'],$text);
но у тебя то вложенности надо учитывать...без рекурсии не обойтись, если юзать реги. В рамках твоей задачи то, для чего нужен UID в phpBB, вообще не важно.