Ha solo un piccolo difetto. Tronca con precisione al centesimo carattere, anche tagliando una parola a metà. Vi propongo un'altra soluzione che tiene conto anche delle parole. Non è così precisa (nel senso che stampa almeno 100 caratteri, poi possono essere 105 perchè non tronca una parola a metà) ma evita quella brutta cosa.
Codice PHP:
function tronca_stringa($stringa, $max_length)
{
$Str_Array = explode(" ", $stringa);
$Result = "";
$caratteri = 0;
$inc = 0;
while($caratteri < $max_length)
{
$caratteri = $caratteri + strlen($Str_Array[$inc]) + 1;
$Result .= $Str_Array[$inc] . " ";
$inc++;
}
$Result .= "...";
return $Result;
}