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!

7 Comentários »

  1. silici0 said,

    Outubro 21, 2008 @ 10:03

    Cria coragem e escreve mais... :P

    Abraços

  2. Bill said,

    Outubro 22, 2008 @ 18:34

    No cake tem o textHelper Truncate

    http://api.cakephp.org/class_text_helper.html#a9fc20127fa1c1a0390b7c3cd9800e25

  3. Tulio Faria said,

    Outubro 23, 2008 @ 09:17

    @Bill

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

    t+

  4. eu said,

    Outubro 30, 2008 @ 16:26

    $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...

  5. Giovanni said,

    Novembro 10, 2008 @ 10:22

    Minha POG foi assim:

    1) array_pop($texto);
    $texto = implode(" ", $texto)."...";
    echo $texto;
    ?>

  6. Giovanni said,

    Novembro 10, 2008 @ 10:24

    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. :)

  7. Carlos said,

    Dezembro 2, 2008 @ 12:42

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

RSS feed for comments on this post · URI do TrackBack

Deixe seu comentário