Advertisement
Guest User

Untitled

a guest
Nov 27th, 2014
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.16 KB | None | 0 0
  1. <?php
  2. /**
  3.  * Smarty plugin
  4.  *
  5.  * @package    Smarty
  6.  * @subpackage PluginsModifier
  7.  */
  8.  
  9. /**
  10.  * Smarty truncate modifier plugin
  11.  * Type:     modifier<br>
  12.  * Name:     truncate<br>
  13.  * Purpose:  Truncate a string to a certain length if necessary,
  14.  *               optionally splitting in the middle of a word, and
  15.  *               appending the $etc string or inserting $etc into the middle.
  16.  *
  17.  * @link   http://smarty.php.net/manual/en/language.modifier.truncate.php truncate (Smarty online manual)
  18.  * @author Monte Ohrt <monte at ohrt dot com>
  19.  *
  20.  * @param string  $string      input string
  21.  * @param integer $length      length of truncated text
  22.  * @param string  $etc         end string
  23.  * @param boolean $break_words truncate at word boundary
  24.  * @param boolean $middle      truncate in the middle of text
  25.  *
  26.  * @return string truncated string
  27.  */
  28. function smarty_modifier_truncate($string, $length = 80, $etc = '...', $break_words = false, $middle = false)
  29. {
  30.     if ($length == 0) {
  31.         return '';
  32.     }
  33.  
  34.     if (Smarty::$_MBSTRING) {
  35.         if (mb_strlen($string, Smarty::$_CHARSET) > $length) {
  36.             $length -= min($length, mb_strlen($etc, Smarty::$_CHARSET));
  37.             if (!$break_words && !$middle) {
  38.                 $string = preg_replace('/\s+?(\S+)?$/' . Smarty::$_UTF8_MODIFIER, '', mb_substr($string, 0, $length + 1, Smarty::$_CHARSET));
  39.             }
  40.             if (!$middle) {
  41.                 return mb_substr($string, 0, $length, Smarty::$_CHARSET) . $etc;
  42.             }
  43.  
  44.             return mb_substr($string, 0, $length / 2, Smarty::$_CHARSET) . $etc . mb_substr($string, - $length / 2, $length, Smarty::$_CHARSET);
  45.         }
  46.  
  47.         return $string;
  48.     }
  49.  
  50.     // no MBString fallback
  51.     if (isset($string[$length])) {
  52.         $length -= min($length, strlen($etc));
  53.         if (!$break_words && !$middle) {
  54.             $string = preg_replace('/\s+?(\S+)?$/', '', substr($string, 0, $length + 1));
  55.         }
  56.         if (!$middle) {
  57.             return substr($string, 0, $length) . $etc;
  58.         }
  59.  
  60.         return substr($string, 0, $length / 2) . $etc . substr($string, - $length / 2);
  61.     }
  62.  
  63.     return $string;
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement