ho risolto così...

$punteggiatura= array(" ",",", ".", ";", "-");

foreach ($punteggiatura as $punt){
$testo=str_replace(' '.$vocabolo.$punt, " <a href=#>".$vocabolo."</a>".$punt, $testo);
}
print $testo;


ma esiste un metodo meno macchinoso?