From 951db8e3a9ab2deb5c45a52201d1a29660502833 Mon Sep 17 00:00:00 2001 From: x2003bruneau Date: Wed, 6 Dec 2006 21:45:18 +0000 Subject: [PATCH] Implement token distance with levenshtein git-svn-id: svn+ssh://murphy/home/svn/platal/trunk@1250 839d8a87-29fc-0310-9880-83ba4fa771e5 --- classes/platal.php | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/classes/platal.php b/classes/platal.php index 42e743d..ee6fcd1 100644 --- a/classes/platal.php +++ b/classes/platal.php @@ -93,13 +93,19 @@ class Platal if (in_array($key, $keys)) { return $key; } + $val = null; + $best = null; foreach ($keys as $k) { - if (strpos($key, $k) !== false || strpos($k, $key) !== false) { - return $k; + $lev = levenshtein($key, $k); + if ((is_null($val) || $lev < $val) && $lev < strlen($k)/2) { + $val = $lev; + $best = $k; } } - if (in_array("#final#", $keys)) { + if (is_null($best) && in_array("#final#", $keys)) { return "#final#"; + } else { + return $best; } return null; } -- 2.1.4