terça-feira, 20 de julho de 2010

[PHP] - Função para limitar caracteres

Essa é uma função muito usada quando você quer delimitar alguma frase ou texto que não possa "estourar" o layout.


<?php
function setMaxCaracter($texto,$max) {
                $qtde = strlen(html_entity_decode($texto));
                $n = 0;
                $i = $max;

                if ($qtde > $max)
                {
                               $palavras = explode(' ', $texto);
                               foreach ($palavras as $Palavra)
                               {
                                               $tamanho = strlen(html_entity_decode($Palavra));
                                               $n = $n + $tamanho + 1;
                                               if($n >= $max)
                                               {
                                                               $i = strpos($texto, $Palavra, ($n - $tamanho - 1));
                                                               break;
                                               }
                               }
                               $texto = substr($texto, 0, $i).'...';
                }
                return $texto;
}

echo setMaxCaracter("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi vel odio ac ipsum blandit hendrerit. Morbi mattis fermentum ligula eget lobortis.","22");
?>

Vai dar o seguinte resultado:
"Lorem ipsum dolor sit..."

2 comentários:

  1. Cara uma maneira um pouco mais simples de fazer isso:

    function cropString($sString,$nQntChar,$sFim){
    if(strlen($sString) > $nQntChar){
    $sString = substr($sString,0,$nQntChar);
    $sString = substr($sString,0,strrpos($sString," ")).$sFim;
    }
    return $sString;
    }

    podes usar assim:

    $string = "Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet,Lorem ipsum dolor sit amet,Lorem ipsum dolor sit ametLorem ipsum dolor sit ametLorem ipsum dolor sit amet, Lorem ipsum dolor sit amet";

    cropString($string, 30, "...");

    output: Lorem ipsum dolor sit amet, Lo...

    ResponderExcluir
  2. Acho que se você tiver um html com "iacute" ela pode dar problema! Mas nada que uns ajustes não arrumem também! hehe

    ResponderExcluir