Markus: Vergleich von zwei Strings / Änderungen hervorheben

Hallo zusammen,

ich habe zwei Strings, die würde ich gerne miteinander vergleichen. Nach dem Vergleich sollen die Unterschiede im Text rot hervorgehoben sein. Ähnlich wie man es von Word kennt, wenn der Änderungsmodus an ist. So eine Art windiff.exe unter php.
Hat da jemand einen Ansatz oder besser eine fertige Funktion für mich?

VIELEN DANK,
Markus

  1. Lieber Markus,

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

    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!

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

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