Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Vinícius Siller

[RESOLVIDO] Limitar texto e incluir 3 pontinhos.

Recommended Posts

Bom gente, sou iniciante em PHP, faz duas semanas que comecei dar meus primeiros passos.

Até então, só programava em ASP. Estou criando meu sistema de CMS, agora em PHP, está sendo um grande desafio pra mim.

Hoje me deparei com a necessidade de limitar um texto, todo mundo conhece o substr , mas não fiquei satisfeito, pois eu queria colocar 3 pontinhos (...) no final do texto. Você deve estar dizendo: - Muito simples Vinícius, faça assim:

 

<?php echo substr($linha['valor'],0,60); echo"..." ?>

 

Lógicooo, porque não pensei nisso antes!? Se meu texto conter mais de 60 caracteres, este comando adicionará 3 pontinhos (...) quando completar 60 caracteres. Uau de mais!

Mas se meu texto conter apenas 10 caracteres? Ele tambem adicionará os 3 pontinhos(...)? A resposta é Sim! =/

 

Bom, encontrei muitas matérias e códigos para resolver isto, muitos resolviam, mas cada código imenso, funções mirambolantes, achei tudo muito estranho, pois sempre ouvia dizer que o php era uma linguagem descomplicada, mas isso não vem ao caso, emfim... resolvi criar uma função, bem parecida com uma que muitos programadores em ASP conhecem.

 

Lá vái:

 

 

<?php// Função criada por Vinícius Siller - vinicius.siller@hotmail.com - 12/09/2007// Função para limitar texto e adicionar 3 pontinhos no final.function resume($var, $limite){// Se o texto for maior que o limite, ele corta o texto e adiciona 3 pontinhos.if (strlen($var) > $limite){echo substr_replace ($var, '...', $limite);}else{// Se não for maior que o limite, ele não adiciona nada.echo substr_replace ($var, '', $limite);}}?><?php echo resume(('Meu texto a ser limitado'),20) ?>

Com esta função, ficará impresso desta forma:

Meu texto a ser limi...

Mas se eu aumentar o limite para 80, ficará desta forma:

Meu texto a ser limitado

 

Como já disse, sou programador de primeira viagem em php, se alguem puder melhorar o código ou dizer se tem algo errado, ficarei grato.

 

Espero ter contribuído.

 

Té+ pessoal!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu melhoraria e diminuiria assim:

<?phpfunction resume( $var, $limite ){	// Se o texto for maior que o limite, ele corta o texto e adiciona 3 pontinhos.	if (strlen($var) > $limite)	{		$var = substr($var, 0, $limite);		$var = trim($var) . "...";	}return $var;}?>
Diminuiria porque na sua função, entrar no else seria redundante e melhoraria porque usei o trim() para tirar espaços em branco que possivelmente existiria caso cortasse exatamente onde tem espaço.

 

E também colocar para que tenha um retorno e não que imprima direto na função.

 

Flws...

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mandou bem frenesi, como disse, sou iniciante ainda, me inrrolo um pouco com else no php, já que é bem diferente do asp.. mas beleza... os códigos que encontro para essa finalidade não tem menos de 20 linhas ehehee... não sei se você já tinha visto um menor como este que você melhorou.Mas beleza.. resolvido!flw!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bah galera, meus parabéns pros dois, me livraram de uma dor de cabeça imensa...

tua função funcionou perfeitamente para a minha nota fiscal

 

usei a versão aperfeiçoada... abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

É vou precisar de um exemplo pq to concatenando duas strings do Banco e ta dando erro com esse codigo:

 

function resume( $var, $limite )

{

// Se o texto for maior que o limite, ele corta o texto e adiciona 3 pontos.

if (strlen($var) > $limite)

{

$var = substr($var, 0, $limite);

$var = trim($var) . "...";

}

 

return $var;

}

 

$tituloObra = resume("$resultadoIdExemplar[A] . $resultadoIdExemplar[C]",35);

echo $tituloObra;

 

ta vindo "resultadoIdExemplar[A] ..." o resultado eh menor que 35 caracteres

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante
Este tópico está impedido de receber novos posts.

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.