Thinkphp内置了一个能够媲美smarty的模板引擎,给咱们带来了很大的方便。调用函数也同样,能够和smarty同样调用本身须要的函数,而官方也内置了一些经常使用的函数供你们调用。php
好比今天咱们说的截取字符串函数,在thinkphp模板引擎里能够这样写: {$vo.title|msubstr=0,5,’utf-8′,false} 至于{$vo.title}这个你们确定不陌生了。就说说后边的函数msubstr吧。它表明的意思是截取字符串$vo.title,从0个字符开始截 取,截取5个字符。使用的是utf-8编码,默认截取后不显示省略号,若是要显示省略号,直接把false改为true就能够啦。thinkphp
函数解释:函数
msubstr($str, $start=0, $length, $charset=”utf-8″, $suffix=true)
$str:要截取的字符串
$start=0:开始位置,默认从0开始
$length:截取长度
$charset=”utf-8″:字符编码,默认UTF-8
$suffix=true:是否在截取后的字符后面显示省略号,默认true显示,false为不显示
测试
/** +---------------------------------------------------------- * 字符串截取,支持中文和其余编码 +---------------------------------------------------------- * @static * @access public +---------------------------------------------------------- * @param string $str 须要转换的字符串 * @param string $start 开始位置 * @param string $length 截取长度 * @param string $charset 编码格式 * @param string $suffix 截断显示字符 +---------------------------------------------------------- * @return string +---------------------------------------------------------- */ function msubstr($str, $start=0, $length, $charset="utf-8", $suffix=true) { if(function_exists("mb_substr")){ if($suffix) return mb_substr($str, $start, $length, $charset)."..."; else return mb_substr($str, $start, $length, $charset); } elseif(function_exists('iconv_substr')) { if($suffix) return iconv_substr($str,$start,$length,$charset)."..."; else return iconv_substr($str,$start,$length,$charset); } $re['utf-8'] = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/"; $re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/"; $re['gbk'] = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/"; $re['big5'] = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/"; preg_match_all($re[$charset], $str, $match); $slice = join("",array_slice($match[0], $start, $length)); if($suffix) return $slice."…"; return $slice; }