/**
* 参数说明
* $string 欲截取的字符串
* $sublen 截取的长度
* $start 从第几个字节截取,默认为0
* $code 字符编码,默认UTF-8
*/

function cut_str($string, $sublen, $start = 0, $code = 'UTF-8') {
if ($code == 'UTF-8') {
$pa = "/[\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]/";
preg_match_all($pa, $string, $t_string);
if (count($t_string[0]) - $start > $sublen) return join('', array_slice($t_string[0], $start, $sublen)) . ".....";
return join('', array_slice($t_string[0], $start, $sublen));
} else {
$start = $start * 2;
$sublen = $sublen * 2;
$strlen = strlen($string);
$tmpstr = '';
for ($i = 0; $i < $strlen; $i++) {
if ($i >= $start && $i < ($start + $sublen)) {
if (ord(substr($string, $i, 1)) > 129) {
$tmpstr.= substr($string, $i, 2);
} else {
$tmpstr.= substr($string, $i, 1);
}
}
if (ord(substr($string, $i, 1)) > 129) $i++;
}
if (strlen($tmpstr) < $strlen) $tmpstr.= "";
return $tmpstr;
}
}

使用:

$str="哈哈,帅哥在此!";
echo cut_str($str, 30, 0, 'gb2312'); // gb2312字符编码 echo cut_str($str,30,0) //utf-8字符编码

最新文章

  1. Bootstrap 3学习笔记 -栅格
  2. android studio Error:java.lang.OutOfMemoryError: GC overhead limit exceeded
  3. git 换行符LF与CRLF转换问题
  4. thinkPHP实现瀑布流的方法
  5. Java List实体类去重
  6. app.config动态修改及读取
  7. Remobjects使用经验
  8. 请一定记得升级java虚拟机
  9. 移动端页面开发适配 rem布局原理
  10. Minimum Inversion Number~hdu 1394
  11. 微软必应地图加载错误:Uncaught TypeError: Microsoft.Maps.Location is not a constructor
  12. Github怎么写README
  13. 零基础爬虫----python爬取豆瓣电影top250的信息(转)
  14. [20180413]热备模式相关问题2.txt
  15. String、StringBuffer 的使用 ,两个面试问题
  16. Django创建自定义错误页面400/403/404/500等
  17. Google想出了一个决定人员晋升的算法,然后就没有然后了......
  18. Spring源码解析 - BeanFactory接口体系解读
  19. Qt5.4.1_静态编译
  20. Juniper SRX防火墙简明配置手册(转)

热门文章

  1. Thunder团队第五周 - Scrum会议6
  2. 搭建独立域名博客 -- 独立域名博客上线了 www.hanshuliang.com
  3. iOS开发NS_ENUM和NS_OPTIONS区别
  4. iOS开发allocWithZone介绍
  5. 数论的欧拉定理证明 &amp;amp; 欧拉函数公式(转载)
  6. 【Spring.Net】- 环境搭建
  7. dede5.7文章模型(非软件模型)添加下载附件的方法
  8. memcached安装与启动
  9. EL中定义函数
  10. BZOJ 1816 扑克牌(二分)