|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
![]() ![]() Clément Architecte Logiciel Inscription : avril 2008 Messages : 1 370 ![]() |
Bonjour,
Comme le titre l'indique, j'ai fait un script PHP pour lister les différences entre deux fichiers, d'extensions quelconques, et ligne par ligne. Seulement vous vous en doutez puisque j'ai créer un topic, ça ne marche pas comme je l'aurai souhaité ! Ci dessous mon algo : Code :
L'algo marche presque bien, mais il y a des erreurs, au niveau algorithmique a priori. Avec des jeux d'essais j'arrive à faire apparaitre facilement des lacunes, certaines insertions sont prises pour des modifications par exemple. Je galère dessus depuis une bonne dizaine d'heure, et malgré des modifications "censées", l'algorithme corrige certaines erreurs par d'autres....Bref je ne m'en sors pas.... Si qqun a une suggestion, remarque, j'suis preneur ! |
||
|
|
00
|
|
|
#2 | ||
![]() ![]() Gérard ErnaelstenDBA & Dev PHP Inscription : juin 2005 Messages : 3 183 ![]() |
Bonjour,
comme ceci, un var_dump de $tabDiff; me semble correcte, mais je n'ai tester que sur deux fichier. Code :
__________________
Il faut toujours viser la lune, car même en cas d'échec on arrive dans les étoiles. O.Wilde Mes Articles/Critiques : Merise - Guide pratique PHPExcel PostgreSQL : Administration et exploitation d'une base de données PostgreSQL : Entraînez-vous à créer et programmer une base de données relationnelle |
||
|
|
00
|
|
|
#3 |
![]() ![]() Clément Architecte Logiciel Inscription : avril 2008 Messages : 1 370 ![]() |
Hum....
J'ai tester avec mon jeu d'essai à l'instant est le résultat est en effet complétement différent de celui que j'obtient avec mon algo, mais pour autant, ça ne marche pas du tout ( voire encore moins :S ) Dans mon jeu d'essai je teste deux fichiers que je te joins, ainsi que l'affichage qui va avec ( faudra surement faire des ajustements pour tester ) Le but de cet algo c'est de prendre en compte les insertions et suppressions, avec ta modif, si je rajoute une ligne vide en haut de page, tout le reste est considéré comme modifié.... Voilà mon probleme : comment gérer à la fois les modifs ligne par ligne, les insertions et suppressions ? En tout cas merci de ton aide |
|
|
00
|
|
|
#4 |
![]() ![]() Gérard ErnaelstenDBA & Dev PHP Inscription : juin 2005 Messages : 3 183 ![]() |
J'essaye de comprendre.
quand tu dis comparer , c'est ligne à ligne, ou c'est n'importe où dans le fichier. exemple text.txt-ligne12 = toto text2.txt-ligne147 = toto c'est deux lignes sont identique pour toi ? de plus si ligne identique = insertion si ligne en plus = modification si ligne en moins = suppression cela est correcte?
__________________
Il faut toujours viser la lune, car même en cas d'échec on arrive dans les étoiles. O.Wilde Mes Articles/Critiques : Merise - Guide pratique PHPExcel PostgreSQL : Administration et exploitation d'une base de données PostgreSQL : Entraînez-vous à créer et programmer une base de données relationnelle |
|
|
00
|
|
|
#5 | |
![]() ![]() Clément Architecte Logiciel Inscription : avril 2008 Messages : 1 370 ![]() |
Pour que ce soit plus clair :
On commence par la ligne d'index 0, et on compare les lignes : Si les lignes ont le même contenu ( "toto" et "toto" par exemple ) Alors elles sont identiques ( même index ET même contenu ) Par contre, si les lignes sont différentes, on regarde si par hasard il s'agit d'une insertion ( dans le fichier destination ), en cherchant si la ligne d'indice i se trouve plus loin dans le fichier destination. Si ce n'est pas le cas, on regarde à l'inverse si la ligne d'indice i du fichier source n'a pas été supprimée dans le fichier de destination, pour ça, on regarde si le fichier source contient la ligne d'indice i du fichier destination Sinon on en conclut que c'est juste une modification ponctuelle. Exemple : ( avec l'affichage qui correspondrait ) Dans toto.txt ceci est un test avec une modif du blablabla et une suppression Dans toto2.txt ceci est un test avec une modification une insertion sur deux lignes en plus ! même trois, ça c'est de l'insertion du blablabla Du coup, pour reprendre ton exemple Citation:
J'espère avoir été plus clair ^^' |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com