两种让smarty truncate变量调节器支持中文的方法

2011-06-25 23:22:45 by 【6yang】, 300 visits, 收藏 | 返回
1.使用Multi-Byte String Functions ,需要服务器安装相应模块
 
新建文件: modifier.mb_truncate.php
 
function smarty_modifier_mb_truncate($string, $length = 80, $etc = '...', $middle = false)
{
    if ($length == 0)
        return '';
    if (mb_strlen($string, 'UTF-8') > $length) {
        $length -= mb_strlen($etc);
        if(!$middle) {
            return mb_substr($string, 0, $length).$etc;
        } else {
            return mb_substr($string, 0, $length/2) . $etc . mb_substr($string, -$length/2, $length/2, 'UTF-8');
        }
    } else {
        return $string;
    }
}
 
2.
新建文件: modifier.mb_substring.php
 
 function smarty_modifier_substring($string, $from, $length = null)
{
    preg_match_all('/[-]?./', $string, $match);
    if(is_null($length))
    {
        $result = implode('', array_slice($match[0], $from));
    }
    else
    {
        $result = implode('', array_slice($match[0], $from, $length));
    }
    return $result;
}
分享到:
share

    图片原图

    loading

    loading