gluon-web-remote

Web remote Administration for big size of gluon routers
git clone git://archive.git.mtrnord.blog/MTRNord/gluon-web-remote.git
Log | Files | Refs | README

modifier.truncate.php (2148B)


      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 }