Great class, it really works very well. However I would argue some of your logic.
<em><p>here we go!</p><p>One more line</p></em>
Your class will kill the em as your logic denies em outside a P, resulting in this code:
<p>here we go!</p><p>One more line</p>
However, given the fact that code might come from eg. TinyMVE or another WYSIWYG my example is a valid one and should produce the following code if fixed at all:
<p><em>here we go!</em></p><p><em>One more line</em></p>
Killing the <em> doesnt really fix anything, it accually destroys the presentation of the page.
However, easy to prevent in your code however by just modifying the array for the p check. As I do not have had time to let your class sink into my brain yet, I havnt come up with my fix just disabled the fix. If I do, I will surely post it here!