Cita: No me manejo mucho con las expresiones regulares, pero lo que si se es que estas cosas se pueden hacer usando una especie de pila...
Ya lo había pensado, pero creí que sería más simple utilizando una expresión regular —lo de la pila es simple en planteamiento, pero al intentar llevarlo a la práctica se vuelve un tanto complejo.
Al final he abandonado la tarea, pues me han sugerido utilizar la herramienta Tidy, que hace esto y mucho más:
http://en.wikipedia.org/wiki/HTML_Tidy,
http://tidy.sourceforge.net/,
http://www.php.net/manual/es/book.tidy.php.
De todos modos, gracias por vuestras respuestas.