Allora, continuando con le mie prove sono arrivato a questo punto. In pratica dalla stringa inserita dall'utente elimino le parole più corte di 3 caratteri e gli apostrofi.
Mi sembra che funzioni a dovere ma allo stesso tempo la trovo molto farraginosa come soluzione. Stavo pensando allora di impedire a priori l'inserimento di termini inferiori ai 3 caratteri come avviene in questo forum ma non saprei come fare. Inoltre ho fatto alcune prove.
Se nel forum scrivo "cd vari" il forum mi restituisce questo messaggio:
Il termine da ricercare che hai inserito(cd) ha caratteri inferiori al minimo di (3) e pertanto non potrà essere trovato; prova con qualche altro termine.
Se invece scrivo "i array" la ricerca la effettua senza problemi anche se i è di una sola lettera. Vorrei capire come funziona la cosa. Grazie ancora.
codice:
$ricerca = "il cane era sotto l'Albero del giardino e riposo";
//$pattern = preg_replace('/[ ]{2,}/', ' ', $ricerca); sembra che se ne possa fare a meno
// elimino dalla stringa le parole più corte di 3 caratteri e gli apostrofi
$pattern = array("/\b([[:alpha:]]{1,3})\b/i","/'/");
$pattern = preg_replace($pattern, "", $ricerca);
echo $pattern;
echo "
";
$stringa = "il cane era a riposo sotto l'albero del ,giardino";
$pattern = explode(' ',$pattern);
// con questo ciclo elimino gli elementi vuoti dall'array
foreach($pattern as $chiave=>$valore)
if($pattern[$chiave] == '')
unset($pattern[$chiave]);
foreach($pattern as $chiave=>$valore)
$pattern[$chiave] = "/\b$valore\b/i";
$stringa = preg_replace($pattern,"$0",$stringa);
echo '
';
echo $stringa;