Zeichenketten dynamisch vergleichen
Mike
- php
0 frankx
Moin zusammen!
Ich möchte (jeweils)(mindestens) zwei Zahlenblöcke miteinander vergleichen und Unterschiede darin farblich hervorheben. Diese Blöcke sind größtenteils gleich. Ich gebe mal ein Beispiel:
54893 57941 35489 35756 68745 65789 23456 63574 47856 85573 98745 56314 44856 33579 56975 15974 68745 65784 35784 35743 68777 53248 65789 35798 53631 15897 56874 38745 65795 48687
wird verglichen mit
54893 57941 35489 ##### 35756 68745 65789 23456 63574 47856 ##### ##### 85573 98745 56314 44856 ##### ##### ##### ##### 33579 56975 15974 68745 65784 35784 35743 68777 53248 65789 35798 53631 15897 56874 38745 ##### 65795 48687
Es muss also ein Script her, das an der Stelle eines auftretenden Unterschiedes diesen markiert und dann nachsieht, ob und ab wann die Blöcke wieder identisch sind.
Problem 1:
54893 57941 35489 35756 68745 65789 23456 63574
gegenüber
54893 57941 ##### 35489 ##### ##### ##### #####
Hier ist ein Zeichen identisch mit dem, das in Block 1 der Stelle des Unterschiedes folgt. Die folgenden sind aber wieder verschieden. Es soll möglich sein, zu bestimmen, wie viele gleiche Zahlen folgen müssen, damit die Folge als identisch gilt, also ob eins reicht oder es zwei oder drei oder ... sein müssen.
Problem 2:
54893 57941 35489 ##### 68745 65789 23456 63574
gegenüber
54893 57941 ##### 35756 68745 65789 23456 63574
Block 2 zeigt einen Unterschied und gleich darauf Block 1. Hier kann ewig nach dem folgenden gleichen Zeichen gesucht werden, obwohl nur eines in Block 2 übersprungen werden muss. Es müsste da also auch etwas her, dass irgendwann aufgibt und sich am nächsten Zeichen versucht.
Meine Idee wäre, die Zahlenblocks an den Leerstellen in einen Array zu exploden und dann in einer while-Schleife zu vergleichen, aber insbesondere wegen der Probleme stehe ich da ziemlich auf dem Schlauch und bräuchte mal einen ganz allgemeinen Ansatz, wie man überhaupt zwei Zeichenketten auf solche Weise vergleichen kann.
Besten Dank und schönen Gruß,
Mike
Hellihello Mike,
mit explode und vergleichen der Teilstrings ist doch schon mal ein Ansatz, da kannst Du sie ja sogar als (int) vergleichen, oder (string). Die Frage ist wohl eher, wie Du wieder "in die Spur kommst", wenn ein Datensatz eingefügt wurde. Dann müsstest Du mit dem nicht gefundenen zum nächsten springen, und schauen ob der passt u.s.w; das wird wohl etwas fummelig.
Gruß,
frankx
Hellihello Mike,
Moin frankx,
mit explode und vergleichen der Teilstrings ist doch schon mal ein Ansatz, da kannst Du sie ja sogar als (int) vergleichen, oder (string). Die Frage ist wohl eher, wie Du wieder "in die Spur kommst", wenn ein Datensatz eingefügt wurde. Dann müsstest Du mit dem nicht gefundenen zum nächsten springen, und schauen ob der passt u.s.w; das wird wohl etwas fummelig.
danke für die Antwort, ich (hatte) vermute(t), da gibt es vielleicht schon schlaue(re) Ansätze, als meinen. Wenn keine anderen Tipps kommen, werde ich wohl mal Fummeln müssen. Gibt ja auch Schlimmeres..
Schönen sonnigen Sonntag,
Mike
Nabend Mike,
..., ich (hatte) vermute(t), da gibt es vielleicht schon schlaue(re) Ansätze, als meinen. Wenn keine anderen Tipps kommen, werde ich wohl mal Fummeln müssen. Gibt ja auch Schlimmeres..
Es ist zwar nicht das gleiche Format, aber Texte kann man schön mit Diff vergleichen. In PHP gibts dafür das PEAR-Paket Text_Diff. Es vergleicht statt Zahlen, die durch Leerzeichen getrennt sind, Text-Zeilen, die durch Zeilenumbruch-Zeichen getrennt sind. Vielleicht kannst du dir ja was abkucken.
MffG
EisFuX