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月前
|
安全 程序员 C语言
C++零基础教程(C++中的字符串)
C++零基础教程(C++中的字符串)
65 0
|
编译器 Python
python中字符串转义与拼接
python中字符串转义与拼接
171 0
PHP实现截取中文字符串不出现?号的解决方法
PHP实现截取中文字符串不出现?号的解决方法
119 0
|
Web App开发 数据采集 Linux
Python-网页转义字符及正则全文匹配
前言 大部分情况下,通过request去请求网页,response.text返回来的都是正常值,但是有一些反爬虫比较严重的网站(比如知乎)就不会是这样。知乎会返回转义字符,例如: header = { "User-Agent":"Mozilla/5.
1356 0
|
Java
用正则表达式处理含中文字符串的问题
已经是第二次遇到同样的问题了,要匹配的字符串里含有中文,例如“<你好><Edward>”,我希望取出Edward的名字,所以正则表达式为“<[^>]*><([^>]*)>”,匹配后只要取group(1)即可。
1167 0
|
PHP
PHP按符号截取字符串的指定部分
字符串截取在php开发中是比较常用的;而且对于截取的需求也有很多种;就比如说对url链接的操作:http://baijunyao.com/article/12 有时我们想截取最后一个斜杠'/'后面的数字;有时我们又需要截取第一个斜杠'/'前面的内容判断用户输入的url链接带不带http://等等;...
1678 0