一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

thinkphp截取中文字符串的程序代码

时间:2014-04-10 编辑:简简单单 来源:一聚教程网

以下代码加在项目所在目录的Common目录下的common.php文件里面的,比如作者的就是www/Common/common.php文件,当然你也可以直接加到thinkphp的Common/common.php文件里面,这样就所有的项目都可以使用了。

 代码如下 复制代码

function truncate_cn($string,$length=0,$ellipsis='…',$start=0){
 $string=strip_tags($string);
 $string=preg_replace('/\n/is','',$string);
 //$string=preg_replace('/ | /is','',$string);//清除字符串中的空格
 $string=preg_replace('/ /is','',$string);
 preg_match_all("/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/",$string,$string);
 if(is_array($string)&&!empty($string[0])){
  $string=implode('',$string[0]);
  if(strlen($string)<$start+1){
   return '';
  }
  preg_match_all("/./su",$string,$ar);
  $string2='';
  $tstr='';
  //www.111com.net
  for($i=0;isset($ar[0][$i]);$i++){
   if(strlen($tstr)<$start){
    $tstr.=$ar[0][$i];
   }else{
    if(strlen($string2)<$length+strlen($ar[0][$i])){
     $string2.=$ar[0][$i];
    }else{
     break;
    }
   }
  }
  return $string==$string2?$string2:$string2.$ellipsis;
 }else{
  $string='';
 }
 return $string;
}

在thinkphp的模板中用法如下:

 代码如下 复制代码

{$info.subject|truncate_cn=40,'',0}

意思是截取$info['subject']字符串,从第0个字符串开始截取长度为40的字符串,截取字符串长度小于原字符串长度的将什么都不显示,默认是...的,其实后面两个参数是可选的。

 

热门栏目