2011-01-05 47 views
9

La comparación debe funcionar sobre la marcha, por lo que esto debe hacerse a través de javascript o con php (hará que javascript solicite ajax).Comparar 2 cadenas y mostrar la diferencia (php o javascript)

Lo que necesito es probablemente mostrar diferencias avanzadas, por lo que probablemente sea mejor si hay algún tipo de buena biblioteca compatible.

Esta imagen muestra exactamente lo que necesito>

Tortoise Merge

Agregado # 1: yo encontramos este http://ejohn.org/projects/javascript-diff-algorithm/ (ejemplo http://www.djsipe.com/js-diff/), que está bien, pero no es compatible multilínea? y cambia la palabra entera cuando sólo un carácter es diferente ...

Agregado # 2: He probado script php (https://github.com/paulgb/simplediff/) pero tiene defectos.

Agregado # 3: encontré lo que estaba buscando (http://code.google.com/p/google-diff-match-patch/)

+0

posible duplicado de [Resalta la diferencia entre dos cadenas en PHP] (http://stackoverflow.com/questions/321294/highlight-the-difference-between-two-strings-in-php) – GWW

+1

como puedes ver , la pregunta en el enlace que me diste, tiene 2 años, y la respuesta, que fue aceptada, se ha roto (ya comenté esa respuesta esta tarde). –

Respuesta

8

Esta respuesta a una pregunta relacionada parece prometedor para JavaScript. google-diff-match-patch

Proporciona una API que se ocupará de todos los algoritmos complejos y conocidos. Sin embargo, tendrás que trabajar un poco con la presentación.

PHP es más versátil, hay muchas herramientas de diferencia. Mira esta otra pregunta relacionada Calculate text diffs in PHP.

+0

Tnx, creo que esto> http://neil.fraser.name/software/diff_match_patch/svn/trunk/demos/demo_diff.html> es lo que necesito Comprobará esto cualquier informe. –

+0

lo probé y esto es exactamente lo que necesito. tnx! –

+0

Pasé por esto y terminé creando una biblioteca contenedora para ayudar con el "trabajo de presentación" necesario para usar 'diff_match_patch': https://github.com/arnab/jQuery.PrettyTextDiff – arnab

1
+0

como puedes ver, la pregunta en el enlace que me diste, tiene 2 años, y la respuesta, que fue aceptada, tiene un enlace roto (ya he comentado esa respuesta esta tarde). –

+0

@glavic Hay un par de respuestas en el hilo. Este parece bastante prometedor: https://github.com/paulgb/simplediff/blob/5bfe1d2a8f967c7901ace50f04ac2d9308ed3169/simplediff.php – julesj

+0

ya probó ese script o deberíamos llamarlo 2 funciones. no funciona como lo necesito ejemplo: si solo agrego una nueva línea, devuelve la mala diferencia ... –

Cuestiones relacionadas