mirror of
				https://github.com/smarty-php/smarty.git
				synced 2025-10-31 20:31:41 +01:00 
			
		
		
		
	
		
			
	
	
		
			34 lines
		
	
	
		
			923 B
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			34 lines
		
	
	
		
			923 B
		
	
	
	
		
			PHP
		
	
	
	
	
	
|   | <?php | ||
|  | 
 | ||
|  | /* | ||
|  |  * Smarty plugin | ||
|  |  * ------------------------------------------------------------- | ||
|  |  * Type:     modifier | ||
|  |  * Name:     truncate | ||
|  |  * Purpose:  Truncate a string to a certain length if necessary, | ||
|  |  *           optionally splitting in the middle of a word, and  | ||
|  |  *           appending the $etc string. | ||
|  |  * ------------------------------------------------------------- | ||
|  |  */ | ||
|  | function smarty_modifier_truncate($string, $length = 80, $etc = '...', | ||
|  |                                   $break_words = false) | ||
|  | { | ||
|  |     if ($length == 0) | ||
|  |         return ''; | ||
|  | 
 | ||
|  |     if (strlen($string) > $length) { | ||
|  |         $length -= strlen($etc); | ||
|  |         $fragment = substr($string, 0, $length+1); | ||
|  |         if ($break_words) | ||
|  |             $fragment = substr($fragment, 0, -1); | ||
|  |         else | ||
|  |             $fragment = preg_replace('/\s+(\S+)?$/', '', $fragment); | ||
|  |         return $fragment.$etc; | ||
|  |     } else | ||
|  |         return $string; | ||
|  | } | ||
|  | 
 | ||
|  | /* vim: set expandtab: */ | ||
|  | 
 | ||
|  | ?>
 |