fevereiro 22, 2010 | In: Zend
Helper Truncate para Zend Framework
Dias atrás tive a necessidade de truncar strings que vinham do banco de dados e populavam uma combo select.
Como estou utilizando Zend Framework, tinha certeza que acharia algo que me ajudasse, e para não reinventar a roda comecei a pesquisar no oráculo e eis que encontrei um Helper(Truncate) que faz o que eu queria mas com um pequeno probleminha que só acontece em países que fazem uso de acentuação… encoding! =/
Fucei, procurei, estressei até que o Wellaton(Leandro), um companheiro de trabalho indicou o uso da função mb_substr ao invés da substr, e não é que resolveu o problema com a acentuação??!!!
Então tá aí a dica, caso precise truncar strings, existe um helper pronto, fácil de usar e bom pra isso:
<?php
class Virgen_View_Helper_Truncate
{
public function truncate($string, $start = 0, $length = 100, $prefix = '...', $postfix = '...')
{
$truncated = trim($string);
$start = (int) $start;
$length = (int) $length;
// Return original string if max length is 0
if ($length < 1) return $truncated;
$full_length = iconv_strlen($truncated);
// Truncate if necessary
if ($full_length > $length) {
// Right-clipped
if ($length + $start > $full_length) {
$start = $full_length - $length;
$postfix = '';
}
// Left-clipped
if ($start == 0) $prefix = '';
// Do truncate!
$truncated = $prefix . trim(substr($truncated, $start, $length)) . $postfix;
}
return $truncated;
}
}
E caso tenha problema com os caracteres, utilize a função mb_substr no lugar de substr, alterando na linha 22:
$truncated = $prefix . trim(mb_substr($truncated, $start, $length)) . $postfix;
E é isso ae!