Buon pomeriggio, dal titolo sembrerebbe che non sia capace invece lo sono, il problema è il seguente.

Ho un file.txt dove all'interno ho delle frasi che iniziano tutte con un trattino, e la lunghezza delle suddette è variabile, all'interno ce ne sono 4.

Le estrapolo, prima con un implode e poi con un explode, poi con un foreach prendo i valori e la risultante in output è che mi fà vedere tutto il contenuto del file ordinato per frasi.

Ora il problema è che vorrei, di ogni frase soltanto i primi 30-40 caratteri.
Dopo numerosi tentativi sono giunto ad una conclusione che però non mi soddisfa per niente e sono sicuro che c'è un modo migliore per farlo.
Questo è il contenuto della pagina.php:
codice:
<? 
$fA="<font class=\"FontA\">";
$fC="</font>";
$file = implode('',file('demo/progetti.txt'));
$stringa = explode('-',$file);
						
foreach($stringa as $value){
//fare un ciclo per prendere le prime 30 lettere					
/*$i = 0;
for ($i = 1; $i <= 30; $i++) {*/
 //echo $i . "\n";
echo $fA. 
	$value[1] . $value[2] . $value[3] .
	$value[4] . $value[5] . $value[6] .
	$value[7] . $value[8] . $value[9] .
	$value[10] . $value[11] . $value[12] .	
	$value[13] . $value[14] . $value[15] .
	$value[16] . $value[17] . $value[18] .
	$value[19] . $value[20] . $value[21] .
	$value[22] . $value[23] . $value[24] . $fC."

";
	/*echo $fA. $value[$i] . $fC."
";
}*/
}
						
?>
Come vedete ques'ultimo procedimento non è per niente performante, funziona quello è vero ma non mi soddisfa.
La mia domanda è:come faccio ad incrementare il numero di lettere che voglio visualizzare,senza dover scrivere 30 ....$value[28].$value[29].$value[30]?

Spero di essermi spiegato.
Grazie mille...