Cortar frase sem cortar palavras

Hoje durante uma conversa com Silicio pelo MSN, ele me perguntou se tinha algo pronto para cortar uma frase. Ou seja, se o texto é muito grande, colocar por exemplo ... no final.

No Cake tem uma função semelhante, mas eu tava com preguiça de olhar. Então segue minha formidável saída de 2min e completamente POG para o problema:

PHP:
  1. $frase = "O rato roeu a roupa do rei de roma";
  2. $p = explode(" ", $frase);
  3. $c = 0;
  4. $t = 12;
  5. $cortada = "";
  6. foreach($p as $p1){
  7. if (($c<$t)&&(($c+strlen($p1))<=$t)){
  8. $cortada.=" ".$p1;
  9. $c+=strlen($p1)+1;
  10. }else{
  11. break;
  12. }
  13. }
  14.  
  15. echo strlen($cortada)."<br />";
  16. echo $cortada."...";

Deve estar cheio de bugs, mas resolve em um emergência...

Até a próxima!

Comentários (7)