Strano. Cmq mi ero accorto che nel caso la frase fosse stata inferiore a 20 caratteri non l'avrebbe visualizzata.
Ho apportato una piccola modifica. Prova così e speriamo bene.
Codice PHP:
<?php
$frase = "Il festival di Sanremo è stato vinto da Povia";
$frase_array = array($frase); //forzo il casting della variabile
for ($c = 0; $c < count($frase_array); $c++)
{
if (strlen($frase_array[$c]) > 20)
{
$frase_array[$c] = preg_replace("/\s+(\S+)?$/","...", substr ($frase_array[$c], 0, 20));
echo $frase_array[$c];
}
else
echo $frase;
}
?>