Aí, galera.
Abaixo mais algumas funções que podem ser úteis.
A primeira é a limita_letras.
Quantos de vocês já precisaram limitar uma frase à, por exemplo, 20 caracteres? Você pode fazer simplesmente usando substr, mas em 90% dos casos a última palavra ficará cortada. Usando a função abaixo você evita que as palavras sejam cortadas. Você pode definir quantos caracteres a li nha terá sem problemas.
Veja abaixo o código comentado
Aqui eu uso a função
wordwrap pra inserir um "|" em um lugar determinado.
Essa função é geralmente usada pra forçar quebras de linha, inserindo um
caractere que forçará isso, por exemplo o \n ou o <br>. No nosso caso eu
vou colocar um "|", porque eu não quero uma quebra de linha, só quero
determinar um limite. O quarto parâmetro da função wordwrap indica se você
quer que a palavra seja cortada no meio caso atinja o limite estipulado ou não.
no nosso caso vamos deixar em 0 (não).
Depois eu uso o explode pra separar o texto em arrays, dividindo-o por "|".
Agora é só pegar o primeiro elemento do array gerado, que conterá o que eu quero.
Código php
<?
//funcção limita letras. Essa função recebe 2 parâmetros:
//$texto = o texto que você deseja cortar
//$n_letras = a quantidade máxima de letras que você precisa
function limita_letras($texto, $n_letras)
{
$resultado = explode("|",wordwrap($texto,$n_letras,"|",0));
return $resultado[0];
}
?>
Nessa segunda função, eu vou limitar um texto baseado em uma quantidade
máxima de palavras.
Primeiramente eu vou usar o
explode pra separar o texto em arrays pelos "espaços",
basicamente eu to colocando cada palavra em um elemento do arrray.
Depois eu uso o
foreach para percorrer os elementos, e , enquanto eu percorro os elementos
eu verifico se a número atual do elemento já atingiiu o valor que eu estipulei como máximo.
Nesse ínterim eu vou salvando em um array auxiliar (buff, que não é a caça vampiros).
Quando eu atingir o vallor máximo eu encerro o foreach usando o
break.
Agora é só juntar tudo usando o implode e concluir a função.
Código php
function limita_palavras($texto, $n_palavras)
{
$resultado = explode(" ",$texto);
foreach($resultado as $chave=>$r)
{
if($chave>=$n_palavras){break;}
$buff[]= $r;
}
//count($resultado);
return implode(" ",$buff);
}
Comentários:
Micox disse:
Muito, muito boas as funções.
Valeu por compartilhar Klawdyo.
dragun disse:
Hahaha... dei uma brincada com seu código...
Espero que esteja funcionando (testei aqui e tava)
Bom, esse novo código faz o seguinte.
Ele só para de exibir o texto, se todas as tags que forem abertas, forem fechadas..
Para quem recupera HTML do banco de dados...( tentando evitar que quebre o layout )
Fiz na correria, mas acho que está td ok...
{
$resultado = explode(" ",$texto);
$tag_aberta = 0;
foreach($resultado as $chave=>$r)
{
if($chave>=$n_palavras && $tag_aberta == 0){break;}
if(eregi("<[a-z]+$", $r) || eregi("<[a-z]+>", $r)){
$tag_aberta++;
}
if(eregi("^\/>", $r) || eregi("<\/[a-z]+>", $r)){
$tag_aberta--;
}
$buff[]= $r;
}
//count($resultado);
return implode(" ",$buff);
}
Micox disse:
Ver o restante dos comentários no fórum (e aproveitar pra comentar também !).