|Perl: the Markov chain saw|
That's a design issue for the filter. The B is miss-nested, ending in a different block than it starts. Closing a non-block tag won't force a block tag to be closed. Opening a new block doesn't close non-block tags to prevent (huge?) thrash in existing 'sloppy' HTML that works in most browsers, regardless of what the standard says.
They aren't perfect heuristics but they seem to work pretty well and are less restrictive than an HTML validator. Of course, it is quite simple and so is not nearly as DWIM as most browsers.
You can take:
which renders (with your current settings) as
Above these lines...and gets filtered to
and make it valid by changing it to
Above these lines...or you can just make the PM filter happy with
Above these lines...(which shows the whole thing in bold in my browser, though the HTML validator complains about it)
If you wanted to see the PM filter close the B tag because of the P tag, you'd need to
which would get filtered into
If you have a suggestion for a better heuristic, my ears are open. It'd be interesting to see how many existing nodes would be changed by having a new block close any non-block tags. I'd expect quite a few, but I don't have evidence of that.
Updated several times right after creation to add more detail in hopes of making things as clear as possible.
In reply to Re^2: Proper nesting of HTML to be enforced (b p /b)