Foros del Web » Programando para Internet » PHP »

Encontrar etiquetas XHTML que no estén correctamente cerradas

Estas en el tema de Encontrar etiquetas XHTML que no estén correctamente cerradas en el foro de PHP en Foros del Web. Hola a todos. Necesito una expresión regular (o algoritmo) que me permita encontrar etiquetas (X)HTML que no estén bien cerradas (o abiertas) en un texto ...
  #1 (permalink)  
Antiguo 24/12/2008, 07:18
 
Fecha de Ingreso: diciembre-2005
Ubicación: Redondela (Galicia)
Mensajes: 368
Antigüedad: 18 años, 4 meses
Puntos: 1
Encontrar etiquetas XHTML que no estén correctamente cerradas

Hola a todos.

Necesito una expresión regular (o algoritmo) que me permita encontrar etiquetas (X)HTML que no estén bien cerradas (o abiertas) en un texto dado.

Por ejemplo, en este texto la expresión debería coincidir con el <strong>:

Código HTML:
<p>Esto es un <strong>error</p> 
Pensaba que sería fácil, simplemente utilizando aserciones, y creé este patrón:

Código:
#(<(\w+) ?(?-s:.)*?>.*?(?!</\1>))#s
Pero no funciona... Encuentra tanto el p como el strong. Estuve buscando información y ejemplos sobre expresiones regulares en PHP y Perl pero no encuentro nada relacionado con lo que yo pretendo conseguir...

¿Alguna sugerencia?

Gracias por vuestro tiempo.
  #2 (permalink)  
Antiguo 24/12/2008, 08:11
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Respuesta: Encontrar etiquetas XHTML que no estén correctamente cerradas

Se ve bien, pero si no funciona....:S

Acá hay algunos ejemplos http://www.regular-expressions.info/brackets.html o busca en google por "regular expression tag unclosed" y ve si alguien ya invento la rueda.

Sino de no tener respuesta de algún integrante del foro más tarde veré de hacerle unas pruebas a tu código y ver de darte una mano (aunque no prometo nada...es navidad :P).

Saludos.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #3 (permalink)  
Antiguo 24/12/2008, 08:24
Avatar de bLEx  
Fecha de Ingreso: mayo-2008
Ubicación: Villa Alemana, Chile
Mensajes: 181
Antigüedad: 16 años
Puntos: 5
Respuesta: Encontrar etiquetas XHTML que no estén correctamente cerradas

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...

- empiezas a revisar caracter a caracter hasta encontrar un '<'
- luego completas el tag hasta el '>' y lo guardas en la pila
- despues sigues revisando caracrer a caracter hasta encontrar otro '<'
- entonces debes ver si es "</" o "<", en el caso de ser el primero tiene que ser igual al de la pila sino habrai un error... en el caso de ser '<' deberias ingresarlo a la pila...
- y asi sucesivamente. AL final si no se cerro todo entonces tendrias la pila con valores, de lo contrario estaria NULA...

Bueno esa es una idea de algoritmo, no es muy dficil de implementar...
suerte!!!
  #4 (permalink)  
Antiguo 27/12/2008, 11:31
 
Fecha de Ingreso: diciembre-2005
Ubicación: Redondela (Galicia)
Mensajes: 368
Antigüedad: 18 años, 4 meses
Puntos: 1
Respuesta: Encontrar etiquetas XHTML que no estén correctamente cerradas

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.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:04.