使用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 相关文章推荐
php foreach、while性能比较
Oct 15 PHP
php全角字符转换为半角函数
Feb 07 PHP
php中替换字符串中的空格为逗号','的方法
Jun 09 PHP
PHP实现数组递归转义的方法
Aug 28 PHP
php禁止直接从浏览器输入地址访问.php文件的方法
Nov 04 PHP
PHP上传文件时自动分配路径的方法
Jan 09 PHP
php格式化金额函数分享
Feb 02 PHP
php使用curl获取https请求的方法
Feb 11 PHP
php简单实现快速排序的方法
Apr 04 PHP
为你总结一些php系统类函数
Oct 21 PHP
php封装的mysqli类完整实例
Oct 18 PHP
PHP中$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的区别分析
Jul 03 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
深入解析php之apc
2013/05/15 PHP
web server使用php生成web页面的三种方法总结
2013/10/28 PHP
php mail to 配置详解
2014/01/16 PHP
PHP面向对象程序设计之对象克隆clone和魔术方法__clone()用法分析
2019/06/12 PHP
JQuery团队打造的javascript单元测试工具QUnit介绍
2010/02/26 Javascript
创建公共调用 jQuery Ajax 带返回值
2012/08/01 Javascript
关于jQuery新的事件绑定机制on()的使用技巧
2013/04/26 Javascript
JS(JQuery)操作Array的相关方法介绍
2014/02/11 Javascript
批量修改标签css样式以input标签为例
2014/07/31 Javascript
js 获取范围内的随机数实例代码
2016/08/02 Javascript
JS搜狐面试题分析
2016/12/16 Javascript
jQuery中select与datalist制作下拉菜单时的区别浅析
2016/12/30 Javascript
node.js中express-session配置项详解
2017/05/31 Javascript
Vue的Flux框架之Vuex状态管理器
2017/07/30 Javascript
使用 Vue 绑定单个或多个 Class 名的实例代码
2018/01/08 Javascript
vue项目中公用footer组件底部位置的适配问题
2018/05/10 Javascript
详解JavaScript中的数组合并方法和对象合并方法
2018/05/11 Javascript
JointJS流程图的绘制方法
2018/12/03 Javascript
Vue 组件参数校验与非props特性的方法
2019/02/12 Javascript
layer 刷新某个页面的实现方法
2019/09/05 Javascript
vue中实现点击空白区域关闭弹窗的两种方法
2020/12/30 Vue.js
初步讲解Python中的元组概念
2015/05/21 Python
Python2包含中文报错的解决方法
2018/07/09 Python
python之super的使用小结
2018/08/13 Python
浅谈django orm 优化
2018/08/18 Python
python+tkinter实现学生管理系统
2019/08/20 Python
Python读取pdf表格写入excel的方法
2021/01/22 Python
解决img标签上下出现间隙的方法
2016/12/14 HTML / CSS
英国马匹装备和马术用品购物网站:Equine Superstore
2019/03/03 全球购物
高级技校毕业生自荐信
2013/11/18 职场文书
小学教师师德反思
2014/02/03 职场文书
人力资源管理专业应届生求职信
2014/04/24 职场文书
应急管理培训方案
2014/06/12 职场文书
感恩老师演讲稿600字
2014/08/28 职场文书
检讨书格式
2015/01/23 职场文书
演讲开场白台词大全
2015/05/29 职场文书