--- nfo/php/libs/net.php.smarty/plugins/modifier.truncate.php 2002/10/09 00:53:36 1.1 +++ nfo/php/libs/net.php.smarty/plugins/modifier.truncate.php 2004/06/16 21:58:17 1.2 @@ -1,14 +1,26 @@ + * Name: truncate
* Purpose: Truncate a string to a certain length if necessary, - * optionally splitting in the middle of a word, and + * optionally splitting in the middle of a word, and * appending the $etc string. - * ------------------------------------------------------------- + * @link http://smarty.php.net/manual/en/language.modifier.truncate.php + * truncate (Smarty online manual) + * @param string + * @param integer + * @param string + * @param boolean + * @return string */ function smarty_modifier_truncate($string, $length = 80, $etc = '...', $break_words = false) @@ -18,12 +30,10 @@ 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; + if (!$break_words) + $string = preg_replace('/\s+?(\S+)?$/', '', substr($string, 0, $length+1)); + + return substr($string, 0, $length).$etc; } else return $string; }