
Bem, já que acabei de publicar o meu novo site pessoal e a nesse contexto o meu próximo passo é melhorar este blog, faz sentido colocar aqui mais e melhor conteúdo.
O artigo de hoje vai parecer pequeno, mas acredito que vá ajudar muita gente.
Muitas vezes temos um limite de largura para um título e, como não se usam normalmente fontes mono-espaçadas (qualquer caracter ocupa o mesmo espaço em largura), definir um número de caracteres pode-se tornar falacioso.
A função que aqui apresento serve para isso mesmo pois, se bem que não é infalível, é bastante precisa com esse tipo de cálculos (a que aqui coloco não suporta muitos caracteres, mas são livres de a adaptar às vossas necessidades).
<?php
function cutText($txt,$len=30) {
$strlen = strlen($txt);
for ($i=0;$i<strlen($txt);$i++) {
if ($txt{$i} == '.' || $txt{$i} == ':') $strlen -= 0.5;
if ($txt{$i} == 'w' || $txt{$i} == '@') $strlen++;
}
$strlen = round($strlen);
if ($strlen > $len) {
$txt = substr($txt,0,($len-3)).'...';
}
return $txt;
}
?>
Isto é só uma "base" para perceberem esta ideia, que nem sempre será útil, mas sim no caso específico que abordei em cima.
Como podem perceber, a função conta o número de caracteres, mas caso o caracter a ser analisado seja um ponto ou dois pontos (poderão adicionar vírgulas, espaços, etc., mas quer um quer outro normalmente ocupam mais espaço em largura), o "contador interno" diminui meio caracter, mas caso o caracter seja um w ou uma arroba (caracteres mais largos do que o normal), aí já é "contabilizado" mais um caracter.



Samuel
Muito legal esse post Salvou minha Vida
2009-09-09 2:08 am