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:

  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!

8 Comment

  1. Cria coragem e escreve mais… 😛

    Abraços

  2. @Bill

    eu sabia que existia ele, mas como eu disse, a idéia foi fazer algo bem POG e de forma rápida.

    t+

  3. $frase = ‘O rato roeu a roupa do rei de roma’;
    $textofinal = substr($frase,0,26).”…”;

    resumo: pega os 26 primeiros caracteres da frase e adiciona ‘…’ ficando assim
    O rato roeu a roupa do rei…

  4. Minha POG foi assim:

    1) array_pop($texto);
    $texto = implode(” “, $texto).”…”;
    echo $texto;
    ?>

  5. Minha POG foi assim:

    $texto = “O rato roeu a roupa do rei de Roma.”;
    $texto = explode(” “, substr($texto, 0, 25));
    if(count($texto) > 1) array_pop($texto);
    $texto = implode(” “, $texto).”…”;
    echo $texto;

    Repostando por que o blog comeu caracteres…
    Exclua o anterior. 🙂

  6. No caso de uma consulta SQL, pode-se usar a função SUBSTR_INDEX

  7. existe essa função truncate(string $text, int $length=100, array $options)

Deixe uma resposta