Anakin, ti ringrazio per avermi indicato quel "\b", ma preferisco comunque usare [^A-Za-z] (ho tolto i numeri).

Ok, la regex sembra funzionare bene nella query sql (tranne se cerco lettere singole: in quel caso trova dei risultati senza che ci sia corrispondenza: che sarà mai?)

Rimane aperta l'altra domanda: come faccio a dire a preg_replace che deve rimpiazzarmi solo la parola, e non quello che le sta attorno? Questo un esempio tratto dalla mia ultima risposta:
Codice PHP:
$stringa "ciao questa è una parola; seguita dai due punti";
$parola "parola";
$regex "/[^A-Za-z0-9]".$parola."[^A-Za-z0-9]/i";
$substitution "[b] ".$parola." [/b]";
preg_replace($regex$substitution$stringa);
//il risultato è
//ciao questa è una[b]parola[/b]seguida dai due punti
//ha eliminato lo SPAZIO prima di "parola" e i due punti dopo 
vorrei un risultato così: "... è una parola; seguita da..."
dove sbaglio?