使用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的图形函数中显示汉字
Oct 09 PHP
用PHP读取和编写XML DOM的实现代码
Feb 03 PHP
PHP安全配置详细说明
Sep 26 PHP
VIM中设置php自动缩进为4个空格的方法详解
Jun 14 PHP
解析PHP汉字转换拼音的类
Jun 18 PHP
解析PHP计算页面执行时间的实现代码
Jun 18 PHP
PHP+Mysql+jQuery查询和列表框选择操作实例讲解
Oct 22 PHP
Yii2分页的使用及其扩展方法详解
May 23 PHP
PHP开发制作一个简单的活动日程表Calendar
Jun 20 PHP
php阳历转农历优化版
Aug 08 PHP
php实现微信企业号支付个人的方法详解
Jul 26 PHP
PHP使用OB缓存实现静态化功能示例
Mar 23 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 visitFile()遍历指定文件夹函数
2010/08/21 PHP
PHP函数学习之PHP函数点评
2012/07/05 PHP
php漏洞之跨网站请求伪造与防止伪造方法
2013/08/15 PHP
php+ajax+json 详解及实例代码
2016/12/12 PHP
解决出现SoapFault (looks like we got no XML document)的问题
2017/06/24 PHP
php-7.3.6 编译安装过程
2020/02/11 PHP
实例化php类时传参的方法分析
2020/06/05 PHP
简短几句jquery代码的实现一个图片向上滚动切换
2011/09/02 Javascript
javascript中判断一个值是否在数组中并没有直接使用
2012/12/17 Javascript
JavaScript执行效率与性能提升方案
2012/12/21 Javascript
node.js中的fs.realpathSync方法使用说明
2014/12/16 Javascript
js实现大转盘抽奖游戏实例
2015/06/24 Javascript
require、backbone等重构手机图片查看器
2016/11/17 Javascript
jQuery实现立体式数字滚动条增加效果
2016/12/21 Javascript
jquery.cookie.js的介绍与使用方法
2017/02/09 Javascript
原生js轮播特效
2017/05/18 Javascript
基于vue监听滚动事件实现锚点链接平滑滚动的方法
2018/01/17 Javascript
JavaScript实现一个带AI的井字棋游戏源码
2018/05/21 Javascript
iView框架问题整理小结
2018/10/16 Javascript
JavaScript 截取字符串代码实例
2019/09/05 Javascript
微信小程序列表时间戳转换实现过程解析
2019/10/12 Javascript
TypeScript高级用法的知识点汇总
2019/12/17 Javascript
VUE实现Studio管理后台之鼠标拖放改变窗口大小
2020/03/04 Javascript
Node.js API详解之 module模块用法实例分析
2020/05/13 Javascript
解决Antd Table组件表头不对齐的问题
2020/10/27 Javascript
Python THREADING模块中的JOIN()方法深入理解
2015/02/18 Python
python基于urllib实现按照百度音乐分类下载mp3的方法
2015/05/25 Python
python绘制简单彩虹图
2018/11/19 Python
【python】matplotlib动态显示详解
2019/04/11 Python
将Python字符串生成PDF的实例代码详解
2019/05/17 Python
解决json中ensure_ascii=False的问题
2020/04/03 Python
python构造IP报文实例
2020/05/05 Python
Python如何对齐字符串
2020/07/30 Python
C/C++有关内存的思考题
2015/12/04 面试题
MySQL 存储过程的优缺点分析
2021/05/20 MySQL
logback 实现给变量指定默认值
2021/08/30 Java/Android