Az ilyen eseteken alapvetően két módon lehet segíteni:
1. a hasonló találatok megjelenítésével ("Erre gondolt?")2. vagy esetleg a kereséseket adatbázisba mentve átnézhetők a sikertelen keresések és azokra alapozva felajánlható alternatíva
Értelemszerűen a második lehetőség jár több munkával , míg előbbi automatikussá tehető. Ezzel foglalkozunk most.
Ha rákeresünk arra, hogy "fuzzy search php", akkor bőven találhatunk kész, komplexebb megoldásokat, de önmagában a PHP is képes erre.similar_text()
A similar_text megmondja, hogy két paraméterül kapott string mennyire hasonló. Ha nem teljes az egyezés, de pl. 80%-ban hasonló, akkor elképzelhető, hogy csak elgépelésről van szó.A használata:
int similar_text ( string $first , string $second [, float &$percent ] )Vagyis egyik string, másik string, opcionálisan egy változó, amibe belekerül a százalékban megadott hasonlóság. Egy számot eredményez, amely azt mondja meg, hogy mennyi egyező karaktert talált a két stringben. A két string felcserélése eltérő eredményt adhat!
$h = similar_text('telefon', 'telefn', $sz);
echo "hasonlóság: $h ($sz %)";
Eredménye:
hasonlóság: 6 (92.307692307692 %)levenshtein()
Kiszámítja az úgynevezett Levenshtein távolságot két string között. Levenshtein távolság egy szám, amely azt fejezi ki, hogy mennyi karakter beszúrására, törlésére, cseréjére van szükség, hogy a két string megegyezzen. Egy számot ad eredményül, ami ha 0, akkor a két string megegyezik, ha -1, akkor az egyik string hosszabb, mint 255 karakter.A használata:
int levenshtein ( string $str1 , string $str2 )
echo levenshtein ( "telefon", "telefoon" );
Eredménye: 1, mert az egyik string eggyel több karaktert tartalmaz.
A levenshtein() a multibyte karakterek (mint az UTF-8) esetén hibás értéket adhat:
echo levenshtein ( "körte", "korte" );
Eredménye: 2, pedig csak egynek kellene lennie.
Ha ez probléma, akkor célszerű egy olyan megoldást keresni, amely erre fel van készítve.A levenshtein() -t felhasználva egyébként szavak halmazából ki lehet választani a leginkább hasonlót, ha egy keresés nem eredményezett találatot. Erre a php.net-en van egy kész példa, érdemes megnézni.

Termék tesztek, hírek, bemutatók ✦ mobilok, okosórák, médialejátszók, stb. ✦ kattints ide!