Necesito tomar dos bloques de texto con etiquetas html y hacer una comparación: combine los dos bloques de texto y luego resalte lo que se agregó o eliminó de una versión a la siguiente.Cómo mostrar una comparación de bloques de texto de 2 html
He utilizado la clase PEAR Text_Diff para realizar comparaciones con éxito de texto plain, pero cuando trato de arrojar texto con etiquetas html, se pone feo. Debido a la palabra y los algoritmos de comparación basados en caracteres que usa la clase, las etiquetas html se rompen y termino con cosas feas como <p><span class="new"> </</span>p>
. Mata el html.
¿Hay alguna forma de generar una comparación de texto conservando el marcado html válido original?
Gracias por la ayuda. He estado trabajando en esto durante semanas: [
Esta es la mejor solución que se me ocurrió: encontrar/reemplazar cada tipo de etiqueta html con 1 carácter especial no estándar como el logotipo de manzana (optar shift k), renderice la comparación con este tipo de rebajas primativas, luego invierta los caracteres no estándar de nuevo en etiquetas. ¿Cualquier retroalimentación?
El token encontrar/reemplazar unicode es lo que finalmente funcionó. Acabo de hacer una matriz de clave => valor con cada etiqueta de apertura y cierre y su carácter unicode asociado. Luego generé la comparación e invertí el token/tag swap. –
También encontré que la secuencia de comandos Simple Dif de Paul Butler funciona mucho mejor para texto largo que el paquete PEAR. PEAR se centró palabra por palabra, mientras que la configuración de Butcher produjo una mejor salida con las diferencias restantes fragmentadas juntas como cadenas. Enlace: http://github.com/paulgb/simplediff/blob/5bfe1d2a8f967c7901ace50f04ac2d9308ed3169/simplediff.php –
Hola @SteveG., ¿Qué tipo de Unicodes usaste? Porque si se trata con "\\ u123" o "% 3C" para "<", algunos algoritmos de diferencias no se consideran como la misma palabra. Y si hago un mapa usando las teclas solo con números como letras, ¿cómo puedo garantizar que no entren en conflicto con otra cosa en la parte de texto de html? ¡Gracias! http://i.imgur.com/OAJUAP1.png – Luccas