Ik werk aan een vertaal cursus en in een specifiek stukje moeten mensen een stukje vreemde tekst overtypen (om de vreemde taal te leren, prima).
Een stukje orginele tekst kan er dus zo uitzien:
Hallo this is a test.
How are you doing.
Nu komt het lastige verhaal:
De overgetypte tekst moet gecontroleerd worden nav. de orginele tekst. De fouten moeten b.v. rood gekleurd worden.
Hallo {rood}thiz{/rood} is a test.
How are {rood}jij{/rood} doing.
Nu heb ik een werkende versie; maar optimaal is hij nog niet. Er zijn zoveel uitzonderingssituaties. Bestaande scripts op internet hebben alleen betrekking op regel niveau en NIET op woord niveau.
Heeft iemand hier ervaring mee; of wellicht dat iemand een werkend script ergens weet te vinden?
Aah, maar dat had je er ook nog niet bij gezegd. Toch zou ik het wel op zo'n manier doen, je kan bijvoorbeeld als er een woord teveel is, ook gewoon de melding geven dat er een woord teveel is. Dat is (denk ik) duidelijker dan dat je een woord dat teveel is hetzelfde aanduid als een woord dat niet goed is overgetypt.
Je kan wel bijvoorbeeld kijken of het woord dat er moet staan niet toevallig het volgende woord is. -> Dat is zelfs in bovenstaande voorbeeld prima te realiseren.
<?php
$text = "How are you doing";
$posted_text = "Hou are joe doing";
$reaction = '';
foreach($exploded_text as $key=>$value){
//woord komt overeen
if($value == $exploded_posted[$key]){
$reaction .= $value.' ';
}
//woord komt niet overeen
else{
if($exploded_text[$key] == $exploded_posted[$key+1]){
//melding dat er een woord te veel staat
elseif($exploded_text[$key] == $exploded_posted[$key-1]){
//melding dat er een woord te weinig staat
}
else{
$reaction .= '<p class="red">'.$value.'</p> ;
}
}
}
?>
Zoiets kan je ook aan denken, ik kan me geen regex bedenken die het allemaal zou kunnen. Het gaat al een (stukje) in de richting.