[PHP] Veranderingen bepalen van twee stukken tekst

Pagina: 1
Acties:

  • Nick|IA
  • Registratie: Februari 2000
  • Laatst online: 16-03-2018
Ik wil voor een content management systeem iets maken dat naar de 'oude' invoer kijkt, en die vergelijkt met de 'nieuwe' invoer. Alle 'vernieuwingen', mits die meer zijn dan X - voorbeeld: als er een punt wordt gewijzigd, hoeft er niet meer door een administrator naar gekeken te worden - moeten vervolgens in bijvoorbeeld een kleurtje worden weergeven in de nieuwe tekst. Voorbeeld:

Oud:
"Taalpurisme betekend vaak extreme taalzuivering"

Nieuw:
"TaalPurisme betekent vaak extreme taalzuivering."

Jullie zouden me ontzettend kunnen helpen door mij te zeggen of dit mogelijk is met PHP, en nog meer door het geven van een linkje of een voorbeeldje. Via de search en Google heb ik me al rotgezocht, maar kon niks bruikbaars vinden.

Alvast bedankt!

  • Jorn
  • Registratie: Juni 2001
  • Laatst online: 10-09 16:01
Ik denk dat het wel mogelijk is alleen hoe?
Dit lijkt me wel lastig.
Als het bij elke verandering moet gebeuren doe je gewoon:
<?php
if ($oud==$nieuw) { echo "Niets"; }
else {echo "Admin, kijk eens:)";}
?>

* Erkens is een sukkel en ramt in mirc op f5 :+
* XTerm GROOOOOOTE kuis houden op hd's :)


  • Nick|IA
  • Registratie: Februari 2000
  • Laatst online: 16-03-2018
Maar dan ben je dus voor elk karakter een if aan het uitvoeren... lijkt me ook niet helemaal, eueuh, fijn...

  • Jorn
  • Registratie: Juni 2001
  • Laatst online: 10-09 16:01
Op zaterdag 16 maart 2002 21:21 schreef _DrOpHeAd_ het volgende:
Maar dan ben je dus voor elk karakter een if aan het uitvoeren... lijkt me ook niet helemaal, eueuh, fijn...
Nee, hierbij kijk je of er verschil in zit, dus ook bij alleen 1 punt doet ie al wat.

* Erkens is een sukkel en ramt in mirc op f5 :+
* XTerm GROOOOOOTE kuis houden op hd's :)


  • Nick|IA
  • Registratie: Februari 2000
  • Laatst online: 16-03-2018
Ja, maar da's niet zo spannend...

Ik wil weten wát er veranderd is.

  • Nick|IA
  • Registratie: Februari 2000
  • Laatst online: 16-03-2018
Tweakers.net doet het ook, maar dan op 'kleinere schaal': zolang je minder dan 20 tekens verandert, komt er onder je reactie niet te staan dat je 'm hebt gewijzigd.

  • Mafioso
  • Registratie: November 2000
  • Laatst online: 14:56
Op zaterdag 16 maart 2002 22:00 schreef _DrOpHeAd_ het volgende:
Tweakers.net doet het ook, maar dan op 'kleinere schaal': zolang je minder dan 20 tekens verandert, komt er onder je reactie niet te staan dat je 'm hebt gewijzigd.
Maar dat is dus wel een stukje makkelijker, je doet gewoon zo iets als dit :
if (strlen($nieuw) >= 20 + strlen($oud)) echo "bericht geweizigt bla blah";

  • elnino
  • Registratie: Augustus 2001
  • Laatst online: 03-09 05:13
Op zaterdag 16 maart 2002 23:40 schreef Mafioso het volgende:
Maar dat is dus wel een stukje makkelijker, je doet gewoon zo iets als dit :
if (strlen($nieuw) >= 20 + strlen($oud)) echo "bericht geweizigt bla blah";
De lengte van een bericht is iets anders dan het aantal gewijzigde tekens. Stel ik heb het volgende bericht:
code:
1
De lengte van de gewijzigde tekens...

En dat verander ik in:
code:
1
En stel ik heb het volgende bericht..

En stel dat je een stuk van 20 tekens weghaalt...

  • TlighT
  • Registratie: Mei 2000
  • Laatst online: 22-03 10:40
Voor dit soort toepassingen wordt dacht ik meestal het algoritme van Myers of afgeleiden daarvan gebruikt. Deze staan o.a. beschreven in:

W. Miller and E.W.Myers, A file comparison program. Software--Practice and Experience, 15,11, 1985

E. Myers, ''An O(ND) Difference Algorithm and Its Variations,'' Algorithmica 1, 2 (1986), 251-266.

S. Wu, E. Myers, U. Manber, and W. Miller, ''An O(NP) Sequence Comparison Algorithm,'' Information Processing Letters 35, 6 (1990), 317-323.

Een perl implementatie daarvan staat hier. Voor een c implementatie kun je de source van de gnu diff utility downloaden.

  • Jorn
  • Registratie: Juni 2001
  • Laatst online: 10-09 16:01
Misschien javascript ofzo, in php zou ik het niet weten.

* Erkens is een sukkel en ramt in mirc op f5 :+
* XTerm GROOOOOOTE kuis houden op hd's :)


  • elnino
  • Registratie: Augustus 2001
  • Laatst online: 03-09 05:13
Op zondag 17 maart 2002 19:14 schreef j_iscool het volgende:
Misschien javascript ofzo, in php zou ik het niet weten.
Als het in JavaScript kan, zou het in PHP ook moeten werken. Ik denk dat PHP er zelfs meer voor geschikt is dan JavaScript, tenzij je het server-side gebruikt met ASP.

  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

Dit is iets waar ik ook ooit naar gekeken hebt, en iets wat niet al te makkelijk te implementeren is.
En een goed algoritme is vrij lastig te bedenken.

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

het bepalen van de verschilwaarde kan eenvoudig met de Levensteihn() functie.

Verder zou je mijn inziens het beste op per-regel basis kunnen werken, zonder witruimte mee te tellen tussen de regels. Dan kan je vv. voor elke regel een == doen, en zo niet, per woord het verschil bepalen...

have fun :)

Klaar voor een nieuwe uitdaging.


  • TlighT
  • Registratie: Mei 2000
  • Laatst online: 22-03 10:40
Op zondag 17 maart 2002 19:41 schreef chem het volgende:
het bepalen van de verschilwaarde kan eenvoudig met de Levensteihn() functie.

Verder zou je mijn inziens het beste op per-regel basis kunnen werken, zonder witruimte mee te tellen tussen de regels. Dan kan je vv. voor elke regel een == doen, en zo niet, per woord het verschil bepalen...

have fun :)
Ik denk dat als je per woord het verschil bepaalt, je in de problemen komt als er woorden zijn weggehaald. Als je bijvoorbeeld hebt:
code:
1
2
1. de kat krapt de krullen van de trap
2. de kat de krullen van de trap

dan wil je als diff hebben:
code:
1
2
1. de kat krapt de krullen van de trap
2. de kat _____ de krullen van de trap

en niet:
code:
1
2
1. de kat krapt de krullen van de trap
2. de kat ____________________________

Hetzelfde geldt voor regels; als je een regel weggehaald hebt, moet het diff algoritme dit merken. Een standaard diff algoritme neemt dan ook redelijk wat geheugen in beslag.

Verwijderd

explode je string, en dan ieder woord vergelijken..

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 09-09 14:51

thomaske

» » » » » »

ik heb het zelf nog nooit gebruikt maar misschien zou je dit eens kunnen proberen!

en het unix-commando diff

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Verwijderd

Op zondag 17 maart 2002 19:14 schreef j_iscool het volgende:
Misschien javascript ofzo, in php zou ik het niet weten.
grr.. jorntje als je het antwoord niet weet zeg dan niks.. ik bedoel je beantwoord dingen waar hij niks aan heeft..

  • Grum
  • Registratie: Juni 2001
  • Niet online
laat die jongen nou .. hij hoeft nog maar 1 nutteloze onzinpost voor ie de HK in mag
Aantal posts: 149

Verwijderd

Op maandag 18 maart 2002 17:22 schreef Grum het volgende:
laat die jongen nou .. hij hoeft nog maar 1 nutteloze onzinpost voor ie de HK in mag
[..]
heheheh kee dan :D maar ik ken um persoon en ik vind het zo stom om die onzin te lezen :D
Pagina: 1