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;

Rispondi quotando