使用php实现截取指定长度


Posted in PHP onAugust 06, 2013

PHP语言: 根据中文裁减字符串

function cutstr($string,$length, $dot = ' ...') {
  if (strlen($string) <= $length) {
      return$string;
  }
  $pre = chr(1);
  $end = chr(1);
  $string = str_replace(array('&','"', '<', '>'),array($pre . '&'. $end, $pre . '"' . $end, $pre . '<' .$end, $pre . '>' . $end), $string);  $strcut = '';
  if (strtolower(CHARSET) == 'utf-8'){
      $n = $tn =$noc = 0;
      while ($n< strlen($string)) {
         $t =ord($string[$n]);
         if ($t == 9 || $t == 10 || (32<= $t && $t <= 126)) {
            $tn = 1;
            $n++;
            $noc++;
         } elseif (194 <= $t&& $t <= 223) {
            $tn = 2;
            $n += 2;
            $noc += 2;
         } elseif (224 <= $t&& $t <= 239) {
            $tn = 3;
            $n += 3;
            $noc += 2;
         } elseif (240 <= $t&& $t <= 247) {
            $tn = 4;
            $n += 4;
            $noc += 2;
         } elseif (248 <= $t&& $t <= 251) {
            $tn = 5;
            $n += 5;
            $noc += 2;
         } elseif ($t == 252 || $t ==253) {
            $tn = 6;
            $n += 6;
            $noc += 2;
         } else {
            $n++;
         }
         if ($noc >= $length){
            break;
         }
     }
      if ($noc> $length) {
         $n -= $tn;
     }
      $strcut =substr($string, 0, $n);
  } else {
      for ($i =0; $i < $length; $i++) {
         $strcut .= ord($string[$i])> 127 ? $string[$i] . $string[++$i] : $string[$i];
     }
  }
  $strcut = str_replace(array($pre . '&' .$end, $pre . '"' . $end, $pre . '<' . $end, $pre . '>' .$end), array('&', '"','<', '>'), $strcut);
  $pos = strrpos($strcut, chr(1));
  if ($pos !== false) {
      $strcut =substr($strcut, 0, $pos);
  }
  return $strcut . $dot;
}
PHP 相关文章推荐
杏林同学录(六)
Oct 09 PHP
树型结构列出指定目录里所有文件的PHP类
Oct 09 PHP
IIS下配置Php+Mysql+zend的图文教程
Dec 08 PHP
关于在php.ini中添加extension=php_mysqli.dll指令的说明
Jun 14 PHP
php 什么是PEAR?
Mar 19 PHP
PHP中date()日期函数有关参数整理
Jul 19 PHP
php curl post 时出现的问题解决
Jan 30 PHP
codeigniter教程之上传视频并使用ffmpeg转flv示例
Feb 13 PHP
PHP实现格式化文件数据大小显示的方法
Jan 03 PHP
php+mysqli实现将数据库中一张表信息打印到表格里的方法
Jan 28 PHP
PHP开启opcache提升代码性能
Apr 26 PHP
Laravel中10个有用的用法小结
May 06 PHP
php 如何获取数组第一个值
Aug 06 #PHP
php number_format() 函数通过千位分组来格式化数字的实现代码
Aug 06 #PHP
php实现统计邮件大小的方法
Aug 06 #PHP
php addslashes 利用递归实现使用反斜线引用字符串
Aug 05 #PHP
如何使用PHP批量去除文件UTF8 BOM信息
Aug 05 #PHP
深入解析PHP中逗号与点号的区别
Aug 05 #PHP
php 读取文件头判断文件类型的实现代码
Aug 05 #PHP
You might like
smarty模板引擎中自定义函数的方法
2015/01/22 PHP
php将html转为图片的实现方法
2017/05/19 PHP
PHP实现的各类hash算法长度及性能测试实例
2017/08/27 PHP
PHP大文件分块上传功能实例详解
2019/07/22 PHP
PHP实现简单的计算器
2020/08/28 PHP
在html页面中包含共享页面的方法
2008/10/24 Javascript
javascript iframe中打开文件,并检测iframe存在否
2008/12/28 Javascript
Tab页界面,用jQuery及Ajax技术实现
2009/09/21 Javascript
JS中toFixed()方法引起的问题如何解决
2012/11/20 Javascript
容易造成JavaScript内存泄露几个方面
2014/09/04 Javascript
一篇文章掌握RequireJS常用知识
2016/01/26 Javascript
浅析JS中对函数function的理解(基础篇)
2016/10/14 Javascript
angularjs实现搜索的关键字在正文中高亮出来
2017/06/13 Javascript
Vue.js表单标签中的单选按钮、复选按钮和下拉列表的取值问题
2017/11/22 Javascript
vue element-ui 绑定@keyup事件无效的解决方法
2018/03/09 Javascript
Javascript的console['']常用输入方法汇总
2018/04/26 Javascript
详解通过源码解析Node.js中cluster模块的主要功能实现
2018/05/16 Javascript
基于js实现的图片拖拽排序源码实例
2020/11/04 Javascript
[01:50]2014DOTA2西雅图邀请赛 专访欢乐周宝龙
2014/07/08 DOTA
利用Psyco提升Python运行速度
2014/12/24 Python
python中将函数赋值给变量时需要注意的一些问题
2017/08/18 Python
Series和DataFrame使用简单入门
2019/11/13 Python
python程序输出无内容的解决方式
2020/04/09 Python
Python基于opencv的简单图像轮廓形状识别(全网最简单最少代码)
2021/01/28 Python
使用html2canvas实现浏览器截图的示例代码
2018/01/26 HTML / CSS
html5桌面通知(Web Notifications)实例解析
2014/07/07 HTML / CSS
平安建设实施方案
2014/03/19 职场文书
英文自荐信常用句子
2014/03/26 职场文书
基层党支部公开承诺书
2014/05/29 职场文书
绿色环保口号
2014/06/12 职场文书
2014医学院领导班子对照检查材料思想汇报
2014/09/19 职场文书
优秀班主任推荐材料
2014/12/17 职场文书
政协委员个人总结
2015/03/03 职场文书
寒假社会实践个人总结
2015/03/06 职场文书
求职简历自我评价怎么写
2015/03/10 职场文书
十大冰系宝可梦排名,颜值最高的阿罗拉九尾,第三使用率第一
2022/03/18 日漫