andr3a ha implementato una bella funzoncina che tronca sì il testo, ma ad esempio se al 20° carattere dovrebbe troncarti la parola, questa non ti viene troncata!

questo è il codice [che comuque trovi anche sul suo sito]
codice:
function strSelect( $myString, $maxLength ) {
	// andr3a
	$out = "";
	$s = explode( " ",$myString );
	for( $i = 0, $cs = count( $s ); $i < $cs; $i++ ) {
		$out .= $s[$i]." ";
		if( isSet( $s[$i+1] ) && ( strlen( $out ) + strlen( $s[$i+1] ) ) > $maxLength ) {
			break;
		}
	}
	return rtrim( $out );
}
e qui trovi l'esempio di come applicarla [ http://www.devpro.it/php4_id_3.html ]

io ormai uso sempre questa! e va più che bene, poi vedi tu in base alle tue esigenze