2011-01-05 9 views
9

Porównywanie musi pracować w locie, więc musi to być zrobione przez javascript lub php (spowoduje żądanie ajax javascript).Porównaj 2 łańcuchy i różnicę wyświetlania (php lub javascript)

To, czego potrzebuję, to prawdopodobnie zaawansowana różnica pokazująca, więc prawdopodobnie najlepiej będzie, jeśli istnieje jakaś dobra, obsługiwana biblioteka.

Ten obraz pokazuje dokładnie to, czego potrzebuję>

Tortoise Merge

Dodane # 1: Znalazłem http://ejohn.org/projects/javascript-diff-algorithm/ (przykład http://www.djsipe.com/js-diff/), która jest ok, ale nie obsługuje multilinii? i zmienia całe słowo, gdy tylko jedna postać jest inna ...

Dodany # 2: testowałem skrypt php (https://github.com/paulgb/simplediff/), ale ma wady.

Dodany # 3: znalazłem to, czego szukałem (http://code.google.com/p/google-diff-match-patch/)

+0

możliwy duplikat [Podkreśl różnicę między dwoma ciągami w PHP] (http://stackoverflow.com/questions/321294/highlight-the-difference-between- dwa-strings-inphph) – GWW

+1

jak widać , pytanie na link, który mi dałeś, ma 2 lata, a odpowiedź, która została przyjęta, ma zerwany link (już skomentowałem tę odpowiedź po południu). –

Odpowiedz

8

Ta odpowiedź do powiązanej pytanie wydaje obiecujące dla javascript. google-diff-match-patch

Dostarcza API, które zajmie się wszystkimi złożonymi i dobrze znanymi algorytmami. Musisz jednak popracować nad prezentacją.

PHP jest bardziej wszechstronny, istnieje wiele narzędzi różnicowych. Zobacz inne powiązane pytanie Calculate text diffs in PHP.

+0

Tnx, myślę, że to> http://neil.fraser.name/software/diff_match_patch/svn/trunk/demos/demo_diff.html> jest to, czego potrzebuję. Przetestuje to każde zgłoszenie. –

+0

przetestowałem to i to jest dokładnie to, czego potrzebuję. tnx! –

+0

Przeszedłem przez to i skończyłem tworząc bibliotekę otokową, aby pomóc w "pracy nad prezentacją" potrzebnej do użycia 'diff_match_patch': https://github.com/arnab/jQuery.PrettyTextDiff – arnab

1
+0

Jak widać, pytanie na link, który mi dałeś, ma 2 lata, a odpowiedź, która została przyjęta, ma zerwany link (już skomentowałem tę odpowiedź po południu). –

+0

@glavic W wątku jest kilka odpowiedzi. Ten wygląda dość obiecująco: https://github.com/paulgb/simplediff/blob/5bfe1d2a8f967c7901ace50f04ac2d9308ed3169/simplediff.php – julesj

+0

testowałem już ten skrypt, czy powinniśmy go nazwać 2 funkcjami. to nie działa tak, jak potrzebuję. przykład: jeśli dodaję tylko nową linię, zwraca ona złą różnicę ... –

Powiązane problemy