Tu remplaces les [] par des <>, tu fais parser le tout à un moteur html (gecko, trident, ...), tu parcoures l'arbre DOM résultant, et tu transforme tout ça en XHTML parfaitement valide
Comment ça compliqué ? Bon ok je sors...
Enfin plus sérieusement tu te retrouves devant le problème que recontrent tous les navigateurs web, qui est d'interpréter de manière plus ou moins valide du code invalide... J'imagine que dans un souci de rapidité la forte majorité de ceux qui ont eu à parser de l'UBB ont choisi de déléguer cette lourde tache au navigateur, quitte à ne pas fournir un code correct. (Enfin c'est surtout que tu passes d'un truc rapide à utilisation mémoire quasi nulle qui fait un code pas beau - mais osef - à un truc lent à utilisation mémoire potentiellement infinie, qui dépend entièrement de ce que tu as à parser - et il ne faut jamais faire confiance aux utilisateurs pour ne pas planter ton forum, je crois qu'on le sait tous

)
Donc il ne me semble relativement normal que tu ne trouves rien qui correspond à ce que tu cherches (et non, j'en connais pas non plus, désolé ^^), même si ce que tu demandes est loin (enfin dans une certaine mesure

) d'être impossible, vu que dans ton cas le problème des balises non fermées ne se pose pas réellement ^^
Enfin bon ça me semble même "amusant" à coder, tu veux que je t'en fasse un pour tes tests ? :]