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], 020));
                        echo 
$frase_array[$c];
                    }
                 else
                    echo 
$frase;
            }

?>