$width) { if ($cut) { $_tokens = preg_split( '!(.{' . $width . '})!S' . Smarty::$_UTF8_MODIFIER, $_token, -1, PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE ); } } foreach ($_tokens as $token) { $_space = !!preg_match('!^\s$!S' . Smarty::$_UTF8_MODIFIER, $token); $token_length = mb_strlen($token, Smarty::$_CHARSET); $length += $token_length; if ($length > $width) { // remove space before inserted break if ($_previous) { $t = mb_substr($t, 0, -1, Smarty::$_CHARSET); } if (!$_space) { // add the break before the token if (!empty($t)) { $t .= $break; } $length = $token_length; } } elseif ($token === "\n") { // hard break must reset counters $length = 0; } $_previous = $_space; // add the token $t .= $token; } } return $t; }