mirror of https://github.com/avecms/AVE.cms.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.3 KiB
50 lines
1.3 KiB
<?php |
|
/** |
|
* Smarty plugin |
|
* @package Smarty |
|
* @subpackage plugins |
|
*/ |
|
|
|
|
|
/** |
|
* Smarty truncate modifier plugin |
|
* |
|
* Type: modifier<br> |
|
* Name: truncate<br> |
|
* Purpose: Truncate a string to a certain length if necessary, |
|
* optionally splitting in the middle of a word, and |
|
* appending the $etc string or inserting $etc into the middle. |
|
* @link http://smarty.php.net/manual/en/language.modifier.truncate.php |
|
* truncate (Smarty online manual) |
|
* @author Monte Ohrt <monte at ohrt dot com> |
|
* @param string |
|
* @param integer |
|
* @param string |
|
* @param boolean |
|
* @param boolean |
|
* @return string |
|
*/ |
|
function smarty_modifier_truncate($string, $length = 80, $etc = '...', |
|
$break_words = false, $middle = false) |
|
{ |
|
if ($length == 0) |
|
return ''; |
|
|
|
if (strlen($string) > $length) { |
|
$length -= min($length, strlen($etc)); |
|
if (!$break_words && !$middle) { |
|
$string = preg_replace('/\s+?(\S+)?$/', '', mb_substr($string, 0, $length+1)); |
|
} |
|
if(!$middle) { |
|
return mb_substr($string, 0, $length) . $etc; |
|
} else { |
|
return mb_substr($string, 0, $length/2) . $etc . mb_substr($string, -$length/2); |
|
} |
|
} else { |
|
return $string; |
|
} |
|
} |
|
|
|
/* vim: set expandtab: */ |
|
|
|
?>
|
|
|