wmatch
wmatch
SYNOPSIS
wmatch($word, $wl, $dlimit=0, $closest=true)
DESCRIPTION
wmatch recherche dans la liste de mots $wl les mots correspondant à $word.
La correspondance est déterminée à partir de la distance de Levenshtein. Si $closest vaut true, seuls les mots les plus proches sont retournés.
wmatch est insensible à la casse et aux accents.
IMPORTANT : Les variables globales $search_distance et $search_closest, définies dans config.inc, contrôlent le comportement de wmatch.
$search_distance indique la distance maximale de Levenshtein acceptée pour une correspondance. Une valeur de 0 exige une correspondance exacte, 1 accepte des correspondances proches, 2 des correspondances moins proches, etc.
Si $search_closest vaut true, seuls les mots les plus proches sont retournés. Sinon, toutes les correspondances comprises dans la distance indiquée sont retournées.
EXEMPLE
php > require 'library/wmatch.php';
php > $words = array('orange', 'orage', 'orageux', 'oragee');
php > var_dump(wmatch('orangé', $words, 2));
array(1) {
[0]=>
string(6) "orange"
}
CODE
- require_once 'strflat.php';
- function wmatch($word, $wl, $dlimit=0, $closest=true) {
- $word = strtolower(strflat($word));
- $ret = false;
- foreach ($wl as $w) {
- $d = levenshtein($word, strtolower(strflat($w)));
- if ($d < 0) {
- continue;
- }
- /* DON'T return immediately if $d is 0 to be case and accent insensitive */
- if ($d <= $dlimit) {
- if ($closest && $d < $dlimit) {
- $ret=array($w);
- $dlimit=$d;
- }
- else {
- if ($ret === false)
- $ret=array();
- $ret[]=$w;
- }
- }
- }
- return $ret;
- }
Commentaires