Christoph Zurnieden: Vergleich von zwei Strings / Änderungen hervorheben

Beitrag lesen

Hi,

in der PHP-Doku gibt es eine Funktion namens levenshtein(). Diese Funktion ist darauf spezialisiert, Strings zu vergleichen!

Ja, kann man hier benutzen. Waere aber eine verdammt aufwendige und vor allem sauteure Methode.[1]
Wenn auch sehr kreativ! ;-)

Gewollt ist hier aber wohl eher ein visuelles 'diff'.
Ich weiss nicht, ob das schon jemand in PHP zusammengefummelt hat, ansonsten wuerde ich vorschlagen, einfach 'diff' (ich nehme mal an, das Du die Windowsversion benoetigst?) zu nehmen und die Ausgabe zu parsen.

$ cat eins
Zeile eins
Zeile Zwei
Zeile Drei
$ cat zwei
Zeile eins
Zeile Zwei ist mehr drin
Zeile Drei
$ diff -u eins zwei
--- eins        Thu Oct 27 01:50:41 2005
+++ zwei        Thu Oct 27 01:50:34 2005
@@ -1,3 +1,3 @@
 Zeile eins
-Zeile Zwei
+Zeile Zwei ist mehr drin
 Zeile Drei

Einfach mal ein wenig mit herumspielen, das Format sollte mit PHP gut parsebar sein, vielleicht gibt's das ja sogar schon fertig.

Da die Erläuterungen etwas sehr knapp gehalten sind, empfehle ich ein genaueres Studium der User-Kommentare, da dort die Funktion ausprobiert wurde. Man findet dort oft sehr nützliche Hinweise!

Ja, allerdings fand ich die Qualitaet dort mitunter schon _sehr_ ... aeh ... gemischt. Da steht teilweise hahnebuechener Code direkt neben sorgfaeltig durchdachtem und sauber geschriebenem Code. Da kann ein Anfaenger durchaus mal in eine Falle tappen, denn er kann das ja nicht unterscheiden.
Das soll aber natuerlich keinen davon abhalten, sich den Kommentaren zu widmen, ganz im Gegenteil! Nur eben mit einem gesundem Mass an Skepsis.

so short

Christoph Zurnieden

[1] ist die PHP Implementation des Damerau-Levenshtein-Algorithmus' eigentlich repariert worden oder benoetigt die immer noch O(n^2) Speicher?