Skip to content

Instantly share code, notes, and snippets.

@marcosbrasil
Created June 21, 2012 13:54
Show Gist options
  • Save marcosbrasil/2965881 to your computer and use it in GitHub Desktop.
Save marcosbrasil/2965881 to your computer and use it in GitHub Desktop.
FUnção PHP para limitar texto sem cortar palavras
<?php
function limitarTexto($texto, $limite){
$texto = substr($texto, 0, strrpos(substr($texto, 0, $limite), ' ')) . '...';
return $texto;
}
// String a ser limitada
$string = 'Como limitar caracteres sem cortar as palavras com PHP';
// Mostrando a string limitada em 25 caracteres.
print(limitarTexto($string, $limite = 25));
@elcferreira
Copy link

A função está cortando a ultima palavra mesmo não tendo atingido o limite, segue uma sugestão

<?php 
function limitarTexto($texto, $limite){
  $contador = strlen($texto);
  if ( $contador >= $limite ) {      
      $texto = substr($texto, 0, strrpos(substr($texto, 0, $limite), ' ')) . '...';
      return $texto;
  }
  else{
    return $texto;
  }
} 
// String a ser limitada
$string = 'Como limitar caracteres sem cortar as palavras com PHP ';
print(limitarTexto($string, $limite = 25));
 ?>

@diegocuruma
Copy link

estou usando a Fucn do erick, realmente está nice!!

@JeanGoncalves
Copy link

A função do erickfrreira esta funcionando corretamente. (Y)

@90lteixeira
Copy link

top erick.. muito bom

@renatovieiradesouza
Copy link

Muito útil sua colaboração Erick. Valeu

@walberjefferson
Copy link

walberjefferson commented May 6, 2016

Um melhoramento no código, por questão de caracteres especiais no texto.

= $limite ) { $texto = mb_substr($texto, 0, mb_strrpos(mb_substr($texto, 0, $limite), ' '), 'UTF-8') . '...'; return $texto; } else{ return $texto; } } // String a ser limitada $string = 'Como limitar caracteres sem cortar as palavras com PHP '; print(limitarTexto($string, $limite = 25)); ?>

@lucianoop
Copy link

lucianoop commented Jun 9, 2016

$stringAll = 'Lorem Ipsum é <span> simplesmente uma simulação</span> de texto da indústria tipográfica e de impressos, e vem sendo utilizado desde o século XVI, quando um impressor desconhecido pegou uma bandeja de tipos e os embaralhou para fazer um livro de modelos de tipos. Lorem Ipsum <strong>sobreviveu</strong> não só a cinco séculos, como também ao salto para a editoração eletrônica, permanecendo essencialmente inalterado. <p>Se popularizou na década de 60, quando a Letraset lançou decalques contendo passagens de Lorem Ipsum, e mais recentemente quando passou a ser integrado a softwares de editoração eletrônica como Aldus PageMaker.</p>';

function limitaTexto($string, $words = '100'){
$string = strip_tags($string);
$cont = strlen($string);
if($cont <= $words){
return $string;
}else{
$strpos = strrpos(substr($string,0,$words),' ');
return substr($string,0,$strpos).'...';
}
}
echo limitaTexto($stringAll).'


';

@Cah0s
Copy link

Cah0s commented Aug 29, 2016

Acho que assim ta melhor pra se usar

function limitarTexto($texto, $limite, $quebrar = true){
  //corta as tags do texto para evitar corte errado
  $contador = strlen(strip_tags($texto));
  if($contador <= $limite):
    //se o número do texto form menor ou igual o limite então retorna ele mesmo
    $newtext = $texto;
  else:
    if($quebrar == true): //se for maior e $quebrar for true
      //corta o texto no limite indicado e retira o ultimo espaço branco
      $newtext = trim(mb_substr($texto, 0, $limite))."...";
    else:
      //localiza ultimo espaço antes de $limite
      $ultimo_espaço = strrpos(mb_substr($texto, 0, $limite)," ");
      //corta o $texto até a posição lozalizada
      $newtext = trim(mb_substr($texto, 0, $ultimo_espaço))."...";
    endif;
  endif;
  return $newtext;
}

limitarTexto($conteudo, 100); ou pode setar FALSE também limitarTexto($conteudo, 100, FALSE)

@RenivalNeto
Copy link

RenivalNeto commented Jul 22, 2018

Aproveitando a parte que sobrou

function limitarTexto($texto, $texto2, $limite){
$contador = strlen($texto);
$texto2 = $texto;
if ( $contador >= $limite ) {
$texto = mb_substr($texto, 0, strrpos(mb_substr($texto, 0, $limite), ' '), 'UTF-8') . '...';
$contador2 = strlen($texto);
$resto = $contador - $contador2;
$texto2 = substr($texto2, ($contador2-2), ($resto+1));
return $texto.$texto2;
}
else{
return $texto.$texto2;
}
}
// String a ser limitada
$string = 'Como limitar caracteres sem cortar as palavras com PHP ';
$resultado = (limitarTexto($string, $texto2, $limite = 42));
$partes = explode('...', $resultado);
echo "
resultado = $partes[0]
$partes[1]
";

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment