Änderungen eines Textes verfolgen

Eisbaer

Erfahrenes Mitglied
Hallo,

mache mir derzeit ein paar Gedanken über eine art digitalem Pflichtenheft. Alles in allem sollte das ganze nicht so schwierig sein mit PHP und MySQL... das einzigste was mir derzeit Kopfschmerzen bereitet ist wie man am besten änderungen verfolg, also nicht so einfach wie den alten Stand weg speichern sondern so a la MS Word wo man die geänderte Passage mitgeteilt bekommt, was gelöscht worden ist und wann von wem!

Den gesamten Text einfach mit dem Neu geschrieben Wort für Wort zu vergleichen halte ich für wenig sinnvoll und zu Fehler anfällig da wenn sich Worte wiederholen das ganze ja schon aus dem Ruder läuft...

nun wollte ich euch fragen ob Ihr dazu evtl. ein paar gute Ideen und/oder Anregungen zum Algorhytmus habt evtl. OpenSource Klassen kennt oder oder oder ... ich danke jetzt schonmal und hoffe auf rege anteilnahme :D

Gruß der Eisbaer
 
Um Unterschiede festzustellen, bleibt dir nichts anderes übrig als die Textversionen Wort für Wort miteinander zu vergleichen.
 
hmm das habe ich mir schon fast gedacht :( Problem dabei um es mal an einem Bsp. fest zu machen... :

Code:
Dies ist ein Testtext der später von mir verändert worden ist, aber dies und das bla bla bla. Dies ist ein Testtext? Da bin ich mir nicht sicher

nehmen wir an oben ist das Original und unten der Editierte Text von User XY:

Code:
Dies könnte ein Text sein der von mir verändert worden ist, aber dies und das bla bla bla. Dies ist ein Testtext? Da bin ich mir nicht sicher

Problem jetzt ist: 1. Wort ist gleichgeblieben, 2. Wort verändert... etc. jetzt hat sich der ganze Text aber verkürzt da ich das Wort "später" entfernt habe, dadurch würde der komplette nachfolgende Text als Veränderung gelten. Gut jetzt könnte man prüfen ob die Satzteile irgendwann wieder Synchron laufen, aber das ist meiner Meinung nach sehr Fehler anfällig dadurch das wenn sich Textfetzen wiederholen siehe "Dies ist ein Testtext" welcher im 2. Satz wiederholt vorkommt. Ich hoffe das war verständlich :D naja ich geb die Hoffnung noch nicht auf das jemmand noch eine Idee im petto hat ;)

Danke dir Gumbo trotzdem.

Könnte man sowas evtl. mit Javascript oder so lösen, was jede Änderung im Text protokolliert? Quasi so in etwa,

Zeichen an Position 7 in Zeile 1 entfernt,
Zeichen an Position 6 in Zeile 1 entfernt,
Zeichen "A" an Position 6 in Zeile 1 hinzugefügt,
 
Zuletzt bearbeitet:
Du bist nicht der erste, der sich Gedanken darüber macht. Und es wurden dafür auch schon Lösungen gefunden.

Denn das Ganze lässt sich auf das Longest common subsequence problem, das Problem der längsten gemeinsamen Teilfolge, reduzieren. Algorithmen dafür gibt es frei verfügbar.
Es gibt aber auch bereits Algorithmen für dein Problem. Sogar in PHP. PEAR hält beispielsweise das Text_Diff-Paket zur Verfügung.
 
hey klasse Gumbo, danke das ganze sieht schon sehr gut aus werde es mir mal genauer angucken :)
 
Zurück