Toon posts:

[PHP] De verschillen tussen twee strings

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb twee string met beide bijna dezelfde gegevens. Nu wil ik het voor mekaar krijgen dat hij de twee strings met elkaar vergelijkt en de verschillen op en of andere manier weergeeft. Op welke manier kan ik dit het beste doen?

Voorbeeld:
code:
1
2
3
4
<?php
$string1 = "Dit is de eerste zin. Dit is de derde zin.";
$string2 = "Dit is de eerste zin. Dit is de tweede zin.";
?>

Nu moet hij in $string2 aangeven (bv. door de woorden te onderstrepen o.i.d.) welke woorden verschillen met $string1.

Wie kan mij met dit probleem helpen .....

Verwijderd

Gebruik de zoek hier is pas nog een lang topic over geweest

Verwijderd

Topicstarter
Dat had ik al geprobeerd, alleen ik kon geen informatie vinden welke mijn vraag beantwoord. Misschien kun je een link geven die naar die post verwijst, dan kan ik hem doorlezen ...

  • Erik Jan
  • Registratie: Juni 1999
  • Niet online

Erik Jan

Langzaam en zeker

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$StringA = "Dit is de eerste zin. Dit is de derde zin.";
$StringB = "Dit is de eerste zin. Dit is de tweede zin.";

$StringAWordsArray = Explode(" ", $StringA);
$StringBWordsArray = Explode(" ", $StringB);

$StringAWordsArraySize = SizeOf($StringAWordsArray);
$OnderstreepteZooi = "";

for ($Word = 0; $Word < $StringAWordsArraySize; $Word++) {
  if ($StringAWordsArray[$Word] == $StringBWordsArray[$Word])
    $OnderstreepteZooi .= $StringBWordsArray[$Word] . " ";
  else
    $OnderstreepteZooi .= "<u>" . $StringBWordsArray[$Word] . "</u> ";
}

print $OnderstreepteZooi;

?>

Dit doet geloof ik letterlijk wat je in je bovenstaande post aangeeft. Let niet op namen van variabelen ik had een chronisch tekort aan originele variabelennamen ;)

Je moet trouwes nog ff de spatie aan het eind van $OnderstreepteZooi weghalen maar dat lijkt me geen probleem.

//edit: typo

ps. Erg dynamisch is dit natuurlijk niet, 1 spatie vergeten == alle woorden fout :)

This can no longer be ignored.


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 10-09 14:51

mulder

ik spuug op het trottoir

Je wilt waarschijnlijk woord met woord vergelijken. Ben PHP newbie, maar explode heb ik wel eens voorbij zien komen. Weet niet wat het precies doet, maar het gaat om het doel. Je moet elke woord van beide zinnen in een array of zo stoppen en met elkaar vergelijken. Dan kun je een entry die verschilt bv een format meegeven. Dan weer aan elkaar plakken. Warm serveren.

Edit: wat gepost is terwijl ik typte.....

oogjes open, snaveltjes dicht


Verwijderd

Topicstarter
Bedankt voor de code. Dit geeft een antwoord, maar zoals je zelf al zegt is hij niet perfect. Wanneer er in de tweede string bijvoorbeeld een extra woord wordt ingevoegd loopt alles in de soep. Maar bedankt voot de code, je hebt me een heel stuk geholpen ...

Verwijderd

Het beste zou ik de zin per woord in stukjes kappen, dat kan met de implode functie, en zo kan je "woord 1 met woord 1" (enz) vergelijken.

http://www.php.net/manual/en/function.implode.php
code:
1
$arrayvanwoorden = implode(" ", $jestring);

Dit bovenstaand voorbeeld geeft een array van woorden.

Verwijderd

Topicstarter
DIEAna, dat is ongeveer hetzelfde als wat Erik Jan Je hebt alleen het probleem dat wanneer er een woord bij wordt gezet, de rest van de woorden die daarna komen fout zijn ....

Verwijderd

Op zaterdag 30 maart 2002 19:16 schreef Crush het volgende:
DIEAna, dat is ongeveer hetzelfde als wat Erik Jan Je hebt alleen het probleem dat wanneer er een woord bij wordt gezet, de rest van de woorden die daarna komen fout zijn ....
ah inderdaad!

Karakter per karakter dan maar?

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 10-09 14:51

mulder

ik spuug op het trottoir

Je loopt met de loop door de kleinste zin. Als er meer woorden zijn dan zijn die 'fout' Als er woorden zijn ingevoegd dan word het natuurlijk iets ingewikkelder. Als je dan woord[1] in zin[1] niet vind op positie 1 in zin[2] dan kijken welke woord staat op woord[2] in zin [2]. Woord[1] zin[2] onderstrepen. Als woord[2] zin[2] wel goed is, naar woord[2] zin[1] gaan. Ik ga zuipen.

oogjes open, snaveltjes dicht


Verwijderd

Topicstarter
Ik heb het probleem gedeeltelijk kunnen oplossen door i.p.v. te kijken per woord naar de regels. Wanneer er dan in een regel woorden worden toegevoegd zal hij die hele regel onderstrepen, maar niet de rest van de tekst. Hierdoor wordt alles wat overzichtelijker.

  • Baxlash
  • Registratie: Juni 2000
  • Niet online

Baxlash

Its a boy Genius!

Al eens naar deze functie gekeken?
http://www.php.net/manual/en/function.levenshtein.php

of bedoelde je dit totaal niet?

edit:

nee dus, je wilt zien wat het verschil is
Pagina: 1