Created
December 1, 2014 15:06
-
-
Save edwinheij/1b0bcd91b62d8a66730f to your computer and use it in GitHub Desktop.
Levenshtein
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
Route::get('lev', function() | |
{ | |
$a = [ 'Rotterdam', 'Capelle a/d IJssel', 'Nieuwerkerk a/d IJssel', 'Maassluis', 'Schiedam', '\'s Gravenhage', 'Vlaardingen']; | |
// $b = 'niewekek IJssel'; // match | |
// $b = 'niewkek IJssel'; // geen match | |
// $b = 'Capelle a/d IJssel'; // match | |
// $b = 'capelle ijssel'; // match | |
// $b = 'gravenh'; // geen match | |
// $b = 'gravenhe'; // match | |
// $b = 'gravenha'; // match | |
// $b = 'vlrdinen'; // match | |
// $b = 'vqrdinen'; // geen match | |
$b = 'vardinen'; // match | |
// $b = 'nieuwker aan den ijssel'; // match | |
// $b = 'nieuwke aan den ijssel'; // geen match | |
$maximaalAantalAfwijkingen = 3; | |
if ($plaats = bedoeldeJeDit($a, $b, $maximaalAantalAfwijkingen)) { | |
echo $plaats; | |
} else { | |
echo 'Geen matches gevonden voor: '. $b; | |
} | |
}); | |
function bedoeldeJeDit(array $mogelijkheden, $string = '', $maxAantalAfwijkingen = 3) | |
{ | |
foreach ($mogelijkheden as $mogelijkheid) | |
{ | |
// "oefenweb/damerau-levenshtein": "dev-master" | |
$lev = new DamerauLevenshtein(bedoeldeJeDitString($string), bedoeldeJeDitString($mogelijkheid)); | |
if ($lev->getSimilarity() <= $maxAantalAfwijkingen) return $mogelijkheid; | |
} | |
return false; | |
} | |
function bedoeldeJeDitString($string) | |
{ | |
return str_replace( | |
array( | |
'a/d ', | |
'aan den ', | |
'\'s' | |
), | |
'', | |
strtolower(trim($string)) | |
); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment