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.
		
		
		
		
			
				
					51 lines
				
				1.3 KiB
			
		
		
			
		
	
	
					51 lines
				
				1.3 KiB
			|   
											1 year ago
										 | <?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+)?$/', '', substr($string, 0, $length+1)); | ||
|  |         } | ||
|  |         if(!$middle) { | ||
|  |             return substr($string, 0, $length) . $etc; | ||
|  |         } else { | ||
|  |             return substr($string, 0, $length/2) . $etc . substr($string, -$length/2); | ||
|  |         } | ||
|  |     } else { | ||
|  |         return $string; | ||
|  |     } | ||
|  | } | ||
|  | 
 | ||
|  | /* vim: set expandtab: */ | ||
|  | 
 | ||
|  | ?> |