THINKPHP截取中文字符串函数

简介: 在项目开发中,我们常常会遇到中文字符串截取问题,比如说商品名称过长等,这就要用到字符串截取了。下面我就为大家分享一个字符串截取函数,以在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为不显示
*/

模版使用:

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

Ps:thinkphp可能不存在该函数,不用怕,我把代码给大家贴出来:

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;
}
相关文章
|
6月前
|
关系型数据库 MySQL 数据库
MySQL数据库-截取字符串
MySQL数据库-截取字符串
66 0
|
PHP
PHP字符串学习之怎么去除其他字符,只留下数字
在之前的文章《PHP字符串学习之将字符串分成更小长度的子串》中,我们介绍了分割字符串,将字符串分成更小子串的方法。这次继续PHP字符串的学习与练习,看看如何提取字符串中的数字字符,有需要的可以参考参考~ 本文的主题是:“提取字符串中的数字字符”。例如我们给出下面一个字符串 $str ='0我是123456一段测试的字789符串0'; 如何去除其他字符,只返回由字符串中数字字符组成的子串“01234567890”?下面给大家介绍两种方法:
276 0
PHP实现截取中文字符串不出现?号的解决方法
PHP实现截取中文字符串不出现?号的解决方法
125 0
PHP:mb_substr中文字符串截取避免乱码
PHP:mb_substr中文字符串截取避免乱码
|
Java
用正则表达式处理含中文字符串的问题
已经是第二次遇到同样的问题了,要匹配的字符串里含有中文,例如“<你好><Edward>”,我希望取出Edward的名字,所以正则表达式为“<[^>]*><([^>]*)>”,匹配后只要取group(1)即可。
1169 0
|
PHP Windows
PHP截取汉字乱码问题解决方法之mb_substr函数的应用
PHP截取汉字乱码问题解决方法之mb_substr函数的应用
1419 0