1: | <?php
|
2: | |
3: | |
4: | |
5: | |
6: | |
7: |
|
8: | |
9: | |
10: | |
11: | |
12: | |
13: | |
14: | |
15: | |
16: | |
17: | |
18: | |
19: | |
20: | |
21: | |
22: | |
23: | |
24: | |
25: | |
26: |
|
27: | function smarty_modifier_truncate($string, $length = 80, $etc = '...', $break_words = false, $middle = false)
|
28: | {
|
29: | if ($length === 0) {
|
30: | return '';
|
31: | }
|
32: | if (Smarty::$_MBSTRING) {
|
33: | if (mb_strlen($string, Smarty::$_CHARSET) > $length) {
|
34: | $length -= min($length, mb_strlen($etc, Smarty::$_CHARSET));
|
35: | if (!$break_words && !$middle) {
|
36: | $string = preg_replace(
|
37: | '/\s+?(\S+)?$/' . Smarty::$_UTF8_MODIFIER,
|
38: | '',
|
39: | mb_substr($string, 0, $length + 1, Smarty::$_CHARSET)
|
40: | );
|
41: | }
|
42: | if (!$middle) {
|
43: | return mb_substr($string, 0, $length, Smarty::$_CHARSET) . $etc;
|
44: | }
|
45: | return mb_substr($string, 0, $length / 2, Smarty::$_CHARSET) . $etc .
|
46: | mb_substr($string, -$length / 2, $length, Smarty::$_CHARSET);
|
47: | }
|
48: | return $string;
|
49: | }
|
50: |
|
51: | if (isset($string[ $length ])) {
|
52: | $length -= min($length, strlen($etc));
|
53: | if (!$break_words && !$middle) {
|
54: | $string = preg_replace('/\s+?(\S+)?$/', '', substr($string, 0, $length + 1));
|
55: | }
|
56: | if (!$middle) {
|
57: | return substr($string, 0, $length) . $etc;
|
58: | }
|
59: | return substr($string, 0, $length / 2) . $etc . substr($string, -$length / 2);
|
60: | }
|
61: | return $string;
|
62: | }
|
63: | |