[modificato!!]
Grazie Drugo ma era più una cosa del genere che volevo fare..
Mi sono inventato delle regole di rilevanza delle parole che fa ride ma meglio di niente.. tanto il testo su cui fare l'highlight viene fuori da una ricerca fulltext fatta su mysql.

Codice PHP:
##Supponete che sia il campo di della tabella risultato dalla ricerca, ovviamente alcune delle parole cercate esisteranno.
$text "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut nec tortor. Nulla molestie purus quis felis. Sed condimentum, est non blandit placerat, elit diam tempor lorem, sit amet ornare orci mauris nec dui. Duis in tortor. In nibh dolor, egestas sed, rutrum nec, elementum quis, ligula. In nonummy risus vel nibh. In posuere massa commodo nibh lobortis laoreet. Duis ipsum. Ut sed ligula id dui molestie ultrices. Sed vitae dolor. Sed viverra felis facilisis neque. Vestibulum id eros. Donec non eros. Vivamus odio. Fusce dictum felis malesuada purus. Sed fringilla lorem vel sapien. Aenean rutrum facilisis nisi.";

## Setto i parametri e le funzioni per pulire i le parole chiave usate per la ricerca.
$clear = array(','';''?''!''"''£''$''%''/''\\','('')''=''\'''.');
$replace " ";
##Toglie gli spazi multipli
$regex "([[:space:]]{2,})";
$search explode(" "trim(preg_replace($regex" "str_replace($clear$replacetrim($_POST['search'])))));

## Faccio in modo che le parole più corte di tre lettere siano considerate meno rilevanti
foreach($search as $key){
    if(
strlen($key)>3)
        
$occurrence[$key] = substr_count($text" ".$key);
        
## Può essere commentato!
    
else
        
$occurrenceShort[$key] = substr_count($text" ".$key);
}


##Se sono state cercate parole più lunghe di 3 caratteri
if(count($occurrence) != 0){
    
## Ordino l'array in base al numero di occorrenze in 
        ## maniera che in occurrence[0] ci sia quella più rilevante
    
array_multisort($occurrenceSORT_DESCSORT_NUMERIC);
    
        
## Creo l'array di parole da evidenziare
    
$relevant array_keys($occurrence);
        
        
## Trovo la prima occorrenza della paroola più rilevante e creo 
        ## l'anteprima di 400 caratteri
        ## stando però attento che 200 caratteri prima il testo esista
    
if(strpos($text$relevant[0]) > 200)
        
$init 200;
    else
        
$init strpos($text$relevant[0]);
        
    
$highlight substr($text, (strpos($text$relevant[0])-$init), 300);
    
        
##Creo l'highlight
    
foreach($relevant as $key)
        
$highlight str_replace($key'<font style="background-color:#00CCCC ">'.$key.'</font>'$highlight);
}
##Creo l'anteprima dei primi 300 caratteri.
else{
    
$highlight substr($text0300);
}
 
## Stampo il risultato
echo "[i][...]".$highlight."[...][/i]
"

E' un funzionamento un pò empirico ma per quel che mi serve è efficace... se avete di meglio fatemi sapere, grazie!