Jump to content


Photo

Exibir 150 Primeiras Letras


  • Faça o login para participar
3 replies to this topic

#1 knoxville

knoxville

    Backdoor Man

  • Usuários
  • 951 posts
  • Sexo:Masculino
  • Localidade:Itajaí - SC

Posted 08/04/2009, 19:35

fala galera, td tranquilo?

me desculpem caso já tenha algo sobre isso no fórum, não consegui achar pela busca

eu quero exibir por exemplo as 150 primeiras letras de uma frase, porém que não corte a última palavra no meio, mostrando assim no mínimo 150 (ou no máximo, desde que não fique palavra pela metade, tanto faz) exemplo:

$variavel = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";

as primeiras 150 letras seriam "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam", que neste caso por coincidencia deu 150 letras, mas caso não desse, alguém sabe como eu posso fazer?
obs: se fosse "." "!" ou "?" gostaria que aparecesse, se fosse "," não.

seria para aparecer uma pequena introdução do texto maior, colocando depois um link como "leia mais..."

espero que alguem possa me ajudar

muito obrigado!

#2 lwirkk

lwirkk

    Veterano

  • Usuários
  • 1314 posts
  • Sexo:Não informado

Posted 08/04/2009, 22:09

wordwrap();
Sobre pontos de exclamação e etc, você poderia verificar antes se o texto possui alguma valor aproximado a 150, 160 ou 140, caso sim, ele não corta... '-'
Posted Image
"Se quiser ser feliz por um dia, vingue-se; se quiser ser feliz por uma vida inteira, perdoe."

Muito Obrigado à todos do fórum, e à toda equipe do fórum! =)

#3 savior

savior

    Campanha [codebox], use ou morra :D

  • Usuários
  • 1229 posts
  • Sexo:Masculino
  • Localidade:Curitiba, PR - Brasil
  • Interesses:Na vida ;P

Posted 08/04/2009, 22:14

Boa Noite.

Vê se isso já lhe ajuda: http://forum.wmonlin...o...st&p=898452

Sobre a virgula, eu acho muito exagero isso (entendo seu lado de programador), mas enfim, são raros os casos que isso acontece, mas é só melhorar a função.

Caminha das pedras tá dado!

[]'s

[lastfm] [blog]

Campanha codebox: use-a ou morra!
bfmaster_duran[at]yahoo.com.br


#4 knoxville

knoxville

    Backdoor Man

  • Usuários
  • 951 posts
  • Sexo:Masculino
  • Localidade:Itajaí - SC

Posted 09/04/2009, 11:20

(y) mto obrigado lwirkk, mto obrigado savior! :D
segui o link do savior e deu certo! :)
fiz uma pequena adaptação pra tirar o último digito caso seja uma virgula, e também o htmlentities, porque tava dando problema com acentos e tal
segue o code, comentem por favor, caso saibam uma forma melhor de fazer isto!
<?php

function str_truncate($str, $length, $rep){
 $str = str_replace(',', ' ,', $str);
 while ($virgula != "nao") {
  if(strlen($str)<=$length) return $str;
  $oc = ($rep == 0) ? (strrpos(substr($str,0,$length),' ')) : (strpos(substr($str,$length),' ') + $length);
  $str = (strlen($str) > $length) ? substr($str, 0, $oc). '...' : $str;
  if (substr($str, (strlen($str) - 1), strlen($str)) == ",") { $length = $length-1; } else { $virgula = "nao"; }
 }
 $str = (strlen($str) > $length) ? substr($str, 0, $oc). '...' : $str;
 return str_replace(' ,',',', $str);
}

$variavel = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";

echo str_truncate($variavel, 150, 1)."<br />";

?>

*obs1: coloquei um replace na virgula pra ter o espaço antes pois quando caia na virgula, ele tirava a palavra inteira, o que não é nem o maior problema. o maior problema é que pra tirar esta palavra ele caia em varios whiles, tornando o script lento.
*obs2: QUE FALTA FAZ UM GOTO NO PHP, NÃO?!?! hehe

obrigado! B) :boxing: :beer:

Edição feita por: knoxville, 09/04/2009, 12:13.





1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq