Niente da fare, anche mettendo i vari tipi di encoding dava sempre qualche problema, così ho usato questa soluzione:

Codice PHP:
$testo substr(strip_tags(trim($c['testo'])),0,255);
$subtesto substr($testo,250,255);
$entity strstr($subtesto,'&');
$testo str_replace($entity,'',$testo); 
in questo modo, se negli ultimi 5 caratteri c'è un &, toglie tutta la stringa successiva.