Хранилища Subversion ant

Редакция

Содержимое файла | Последнее изменение | Открыть журнал | RSS

Редакция Автор № строки Строка
304 alex-w 1
<?php
2
/**
3
* Smarty plugin
4
*
5
* @package Smarty
6
* @subpackage PluginsModifier
7
*/
8
 
9
/**
10
* Smarty truncate modifier plugin
11
*
12
* Type:     modifier<br>
13
* Name:     truncate<br>
14
* Purpose:  Truncate a string to a certain length if necessary,
15
*             optionally splitting in the middle of a word, and
16
*             appending the $etc string or inserting $etc into the middle.
17
*
18
* @link http://smarty.php.net/manual/en/language.modifier.truncate.php truncate (Smarty online manual)
19
* @author Monte Ohrt <monte at ohrt dot com>
20
* @param string $string input string
21
* @param integer $length lenght of truncated text
22
* @param string $etc end string
23
* @param boolean $break_words truncate at word boundary
24
* @param boolean $middle truncate in the middle of text
25
* @return string truncated string
26
*/
27
function smarty_modifier_truncate($string, $length = 80, $etc = '...',
28
    $break_words = false, $middle = false)
29
{
30
    if ($length == 0)
31
        return '';
32
 
33
    if (is_callable('mb_strlen')) {
34
        if (mb_strlen($string) > $length) {
35
            $length -= min($length, mb_strlen($etc));
36
            if (!$break_words && !$middle) {
37
                $string = mb_ereg_replace('/\s+?(\S+)?$/', '', mb_substr($string, 0, $length + 1), 'p');
38
            }
39
            if (!$middle) {
40
                return mb_substr($string, 0, $length) . $etc;
41
            } else {
42
                return mb_substr($string, 0, $length / 2) . $etc . mb_substr($string, - $length / 2);
43
            }
44
        } else {
45
            return $string;
46
        }
47
    } else {
48
        if (strlen($string) > $length) {
49
            $length -= min($length, strlen($etc));
50
            if (!$break_words && !$middle) {
51
                $string = preg_replace('/\s+?(\S+)?$/', '', substr($string, 0, $length + 1));
52
            }
53
            if (!$middle) {
54
                return substr($string, 0, $length) . $etc;
55
            } else {
56
                return substr($string, 0, $length / 2) . $etc . substr($string, - $length / 2);
57
            }
58
        } else {
59
            return $string;
60
        }
61
    }
62
}
63
 
64
?>