]>
Commit | Line | Data |
---|---|---|
0cfc86c6 ER |
1 | --- Smarty-2.6.26/libs/plugins/modifier.mb_truncate.php 2009-06-18 14:46:27.000000000 +0000 |
2 | +++ Smarty-2.6.26/libs/plugins/modifier.mb_truncate.php 2010-11-19 11:34:18.704932307 +0000 | |
3 | @@ -10,21 +10,24 @@ | |
4 | * Smarty truncate modifier plugin | |
5 | * | |
6 | * Type: modifier<br> | |
7 | - * Name: truncate<br> | |
8 | + * Name: mb_truncate<br> | |
9 | * Purpose: Truncate a string to a certain length if necessary, | |
10 | * optionally splitting in the middle of a word, and | |
11 | * appending the $etc string or inserting $etc into the middle. | |
12 | + * This version also supports multibyte strings. | |
13 | * @link http://smarty.php.net/manual/en/language.modifier.truncate.php | |
14 | * truncate (Smarty online manual) | |
15 | - * @author Monte Ohrt <monte at ohrt dot com> | |
16 | + * @author Guy Rutenberg <guyrutenberg@gmail.com> based on the original | |
17 | + * truncate by Monte Ohrt <monte at ohrt dot com> | |
18 | * @param string | |
19 | * @param integer | |
20 | * @param string | |
21 | + * @param string | |
22 | * @param boolean | |
23 | * @param boolean | |
24 | * @return string | |
25 | */ | |
26 | -function smarty_modifier_truncate($string, $length = 80, $etc = '...', | |
27 | +function smarty_modifier_mb_truncate($string, $length = 80, $etc = '...', $charset='UTF-8', | |
28 | $break_words = false, $middle = false) | |
29 | { | |
30 | if ($length == 0) | |
31 | @@ -33,12 +36,12 @@ | |
32 | if (strlen($string) > $length) { | |
33 | $length -= min($length, strlen($etc)); | |
34 | if (!$break_words && !$middle) { | |
35 | - $string = preg_replace('/\s+?(\S+)?$/', '', substr($string, 0, $length+1)); | |
36 | + $string = preg_replace('/\s+?(\S+)?$/', '', mb_substr($string, 0, $length+1, $charset)); | |
37 | } | |
38 | if(!$middle) { | |
39 | - return substr($string, 0, $length) . $etc; | |
40 | + return mb_substr($string, 0, $length, $charset) . $etc; | |
41 | } else { | |
42 | - return substr($string, 0, $length/2) . $etc . substr($string, -$length/2); | |
43 | + return mb_substr($string, 0, $length/2, $charset) . $etc . mb_substr($string, -$length/2, $charset); | |
44 | } | |
45 | } else { | |
46 | return $string; |