Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/09/2008, 04:47
Sanva
 
Fecha de Ingreso: diciembre-2005
Ubicación: Redondela (Galicia)
Mensajes: 368
Antigüedad: 18 años, 4 meses
Puntos: 1
Expresión regular para crear párrafos

Hola a todos.

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> 
Ahí lo ideal sería que la expresión regular coincidiese con abcde, para poder envolverlo con las etiquetas de párrafo.

Otro caso:

Código HTML:
ab<strong>cdefg</strong>hijk
En este la expresión debería coincidir con todo el texto, ya que el mismo no está envuelto en etiquetas de párrafo.

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.