今天在写一个字符截取的时候一直做不出来,一直报错“call to undefined function msubstr()”。百思不得解啊!后来才发现TP官方说的是TP没有该函数,需要手动加载到\common\common.php里面或者放到\ThinkPHP\Common\common.php里面,本来我就直接放到了\ThinkPHP\Common\common.php里面,但是后来又想到升级TP的时候会出错,所以我就直接放到了\common\common.php里面。
我现在贴出代码
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);
}
}
}
此外TP里面对msubstr有对应的解释
$str:要截取的字符串
$start=0:开始位置,默认从0开始
$length:截取长度
$charset=”utf-8″:字符编码,默认UTF-8
$suffix=true:是否在截取后的字符后面显示省略号,默认true显示,false为不显示
调用如下
{$vo.title|msubstr=5,5,’utf-8′,false}
解释:截取字符串$vo.title,从第5个字符开始,截取5个,编码为UTF-8,不显示省略号