ThinkPHP截取部分文章文字、字符串

ThinkPHP有一个内置字符截取函数msubstr()如下:

  1. msubstr($str$start=0, $length$charset=”utf-8″, $suffix=true)
  2. $str:要截取的字符串
  3. $start=0:开始位置,默认从0开始
  4. $length:截取长度
  5. $charset=”utf-8″:字符编码,默认UTF-8
  6. $suffix=true:是否在截取后的字符后面显示省略号,默认true显示,false为不显示

在function.php定义msubstr函数

  1. function msubstr($str$start=0, $length$charset="utf-8"$suffix=true){
  2.     if(function_exists("mb_substr")){
  3.         if($suffix){
  4.             return mb_substr($str$start$length$charset)."...";
  5.         }else{
  6.             return mb_substr($str$start$length$charset);
  7.         }
  8.     }elseif(function_exists('iconv_substr')) {
  9.         if($suffix){
  10.             return iconv_substr($str,$start,$length,$charset)."...";
  11.         }else{
  12.             return iconv_substr($str,$start,$length,$charset);
  13.         }
  14.     }
  15.     $re['utf-8']   = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";
  16.     $re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";
  17.     $re['gbk']    = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";
  18.     $re['big5']   = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";
  19.     preg_match_all($re[$charset], $str$match);
  20.     $slice = join("",array_slice($match[0], $start$length));
  21.     if($suffix){
  22.         return $slice."...";
  23.     }else{
  24.         return $slice;
  25.     }
  26. }

调用该函数:

  1. {$vo['title']|msubstr=5,5,'utf-8',false}

 

本文地址:http://liuyanzhao.com/3562.html

转载请注明

 

  • 微信
  • 交流学习,有偿服务
  • weinxin
  • 博客/Java交流群
  • 资源分享,问题解决,技术交流。群号:590480292
  • weinxin
言曌

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: