modifier.truncate.php 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. <?php
  2. /**
  3. * Smarty plugin
  4. * @package Smarty
  5. * @subpackage plugins
  6. */
  7. /**
  8. * Smarty truncate modifier plugin
  9. *
  10. * Type: modifier<br>
  11. * Name: truncate<br>
  12. * Purpose: Truncate a string to a certain length if necessary,
  13. * optionally splitting in the middle of a word, and
  14. * appending the $etc string.
  15. * @link http://smarty.php.net/manual/en/language.modifier.truncate.php
  16. * truncate (Smarty online manual)
  17. * @param string
  18. * @param integer
  19. * @param string
  20. * @param boolean
  21. * @return string
  22. */
  23. function smarty_modifier_truncate($string, $length = 80, $etc = '...',
  24. $break_words = false)
  25. {
  26. if ($length == 0)
  27. return '';
  28. if (strlen($string) > $length) {
  29. $length -= strlen($etc);
  30. if (!$break_words)
  31. $string = preg_replace('/\s+?(\S+)?$/', '', substr($string, 0, $length+1));
  32. return substr($string, 0, $length).$etc;
  33. } else
  34. return $string;
  35. }
  36. /* vim: set expandtab: */
  37. ?>