ugrás a tartalomhoz

Két nagy szöveg összehasonlítása, változások kinyerése

outesticide · 2006. Jan. 24. (K), 17.36
Sziasztok!

A probléma: az adatbázisban van egy szöveg. A felhasználó ezt a szöveget módisítja, majd ez ugye az adatbáziban tárolódik. Az adatázisban 2 oszlop van. 1. a régi szöveg, 2. az új szöveg.
Ezt a két akár nagyon hosszú szöveget kellene összehasonlítani valamiképp, illetve kiszedni belőle a változásokat (a változott rész (akár betű) körüli pár sort).
Ha a szövegeket változóba tárolom és úgy hasoníltom össze az lassú.
Viszont ha méretét nézem, akkor meg nem biztos hogy minden módisítást észrevesz a kód hisz a módisítás lehet pl.: -a és másol +a rak be.
Ez az egyik amire szeretnék valamilyen irányt, kezdő lépést... kapni. A másik pedig hogy hogyan szedhetem ki a változásokat és a körülöttül levő pár sort.
 
1

<Nincs cím>

suexID · 2006. Jan. 24. (K), 17.50
Erre elméletileg a php-ben az strcmp való, bár a manual alján levő kommentek arról tanúskodnak, hogy óvatosan kell bánni vele.
http://hu2.php.net/strcmp

Illetve mintha a PEAR is tartalmazna ide vonatkozó csomagot:
http://pear.php.net/package/Text_Diff
2

<Nincs cím>

outesticide · 2006. Jan. 24. (K), 22.35
Az első sajnos nem elégiti ki a feltételeket, a másodikat pedig nem áll módomban alkalmazni:(
Azért köszöm.
Még valaki?:)
3

diff

Anonymous · 2006. Jan. 24. (K), 23.57
Nekem pont ugyanezt kellett megcsinálnom, és úgy oldottam meg, hogy amikor a tag submit-ol, akkor, mielőtt az adatbázis mentené a változtatásokat, egy ideiglenes file-ba kiírom a jelenlegi állapotot egy SELECT segítségével, mentés után szintén kiírom az új állapotot, majd a két file-ra ráeresztem a linuxos diff parancsot, és ennek a kimenetét, ami a két file közötti különbséget mutatja, elmentem egy log táblába. Természetese ide mentem az időpontot, a bejelentkezett felhasználót, a rekordazonosítót, miegymást.

A dolog nehézségét az ideiglenes file-ok "hatékony" elnevezése, és az említett funkciók megfelelő pillanatban történő meghívása, jelenti, illetve az, hogy a két elmentett állapotnak formátumra (sortörés, karakterkódolás, stb) teljesen egyformának kell lenni, hogy a diff valóban csak a változtatást adja vissza.

Gyulus
4

xdiff

Balogh Tibor · 2006. Jan. 25. (Sze), 00.06
Talán ez segíthet, ha telepítve van:
http://www.php.net/manual/hu/ref.xdiff.php
5

<Nincs cím>

outesticide · 2006. Jan. 25. (Sze), 17.05
Igen ez a megoldás bevállt. Köszönöm mindenkinek a segítséget.