Llevo varios días intentando dar con una expresión regular que me ayude a formatear correctamente texto introducido por el usuario.
La parte complicada es la referente a la creación de párrafos que pudieran no estar bien formateados.
Un ejemplo:
Código HTML:
abcde<p>fghi</p>
Otro caso:
Código HTML:
ab<strong>cdefg</strong>hijk
Se me ocurrió lo siguiente:
Seleccionar todo el texto no envuelto por etiquetas de párrafo: /(?<!<p>)(.*)(?!<\/p>)/s. Este no coincidiría con textos ya envueltos, como <p>hola</p>, evitando que se produzca algo como <p><p>hola</p></p>... pero sí coincide con el primer caso, abcde<p>fghi</p>, ya que realmente no está envuelto, produciendo la aberración <p>abcde<p>fghi</p></p>.
De esa concluyo que lo interesante sería seleccionar todo el texto posible que no incluya un párrafo en su interior... y esto lo escribo como /((?:<p>.*<\/p>){0})/s... lo cual es erróneo pues me selecciona un montón de cadenas vacías...
¿Alguna idea?
Gracias por vuestro tiempo.