Weboldalon működő kereső akkor működik jól, ha a beírt kifejezés egészére és a kifejezés minden egyes szavára is keres. A felhasználó által beírt kifejezést így darabolnunk kell.
A darabolást egy előre meghatározott karakter mentén kell megoldani:
Kereső kifejezés: "szőkítő sampon"
Keresni kell tehát a "szőkítő sampon"-ra, a "szőkítő"-re és a "sampon"-ra is.
Először is szűrjük meg a bevitt keresőszavakat:
if (isset ($_POST['kulcsszo']))
{
//töröljök azokat a karaktereket, amik nem betűk, vagy számok:
$keresesi_kulcsszo = preg_replace('/[^a-zA-Z0-9_\-\.]/i',' ',$_POST['kulcsszo']);
//szedjük le a keresőkifejezés elejéről és végéről a szóközöket:
$keresesi_kulcsszo = trim($keresesi_kulcsszo);
//jöhet a sql injekció elleni alapvédelem:
$keresesi_kulcsszo = mysqli_real_escape_string($mysql,$keresesi_kulcsszo);
}
Kezdjük a darabolást:
A darabolást az explode() függvénnyel végezzük, melynek felépítése:
explode(' ', $keresesi_kulcsszo) - a zárójelben lévő első érték a darabolás alapja (szóköz), a második érték a darabolandó változó. Ennél a példánál a szóköz határozza meg a darabolást.
//számoljuk meg hány szóból áll a szöveg
$szavak_szama = count(explode(' ', $keresesi_kulcsszo));
if ($szavak_szama > 1)
{
//jöhet a darabolás! A szöveg darabok egy tömbbe kerülnek szép sorban egymás után
$szavak = explode(' ', $keresesi_kulcsszo);
//a tömb elemeire a $szamlalo nevű változó mutat majd
$szamlalo = 0;
for ($keres=0;$keres<$szavak_szama;$keres++)
{
$keresoszo_darab = trim($szavak[$szamlalo]);
echo 'Keresőszó: "'.$keresoszo_darab.'";
}
}