That is one of several small mistakes in the code. Another
is that there is only one allowed font attribute and it
makes no sense. Another is that the RE engine has a bit of
behaviour that I didn't understand when I wrote the code,
and so I need to somewhere insert
pos($raw) = pos($raw);. I leave verification
that this is not a no-op, plus discovery of how this can
lead to a bug, to a close reading of perlre. An important
one pointed out by nate is that in reality the post will
appear inside of a layout which is itself done with tables.
Various tags that start new parts of a table should only
be allowed inside of a table that you start. Plus he
pointed out that some HTML tags take attributes which do
not follow the usual pattern, for instance checkboxes can
be "checked".

For these reasons and more, I did a rewrite at Functional take 2
which should have somewhat fewer bugs. I long ago made
the decision that (partly because this site does not keep
revision histories) I wanted to leave the original as it
was, flaws and all.

When putting a smiley right before a closing parenthesis, do you:

Use two parentheses: (Like this: :) )
Use one parenthesis: (Like this: :)
Reverse direction of the smiley: (Like this: (: )
Use angle/square brackets instead of parentheses
Use C-style commenting to set the smiley off from the closing parenthesis
Make the smiley a dunce: (:>
I disapprove of emoticons
Other