使用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 文件上传功能实现代码
Jun 24 PHP
php INI配置文件的解析实现分析
Jan 04 PHP
使用PHP静态变量当缓存的方法
Nov 13 PHP
php实现加减法验证码代码
Feb 14 PHP
php 伪静态之IIS篇
Jun 02 PHP
WordPress中设置Post Type自定义文章类型的实例教程
May 10 PHP
Laravel实现自定义错误输出内容的方法
Oct 10 PHP
利用php实现一周之内自动登录存储机制(cookie、session、localStorage)
Oct 31 PHP
Yii CFileCache 获取不到值的原因分析
Feb 08 PHP
php实现微信扫码支付
Mar 26 PHP
PHP使用Redis实现防止大并发下二次写入的方法
Oct 09 PHP
PHP实现上传图片到数据库并显示输出的方法
May 31 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 广告调用类代码(支持Flash调用)
2011/08/11 PHP
php中数组首字符过滤功能代码
2012/07/31 PHP
基于PHP字符串的比较函数strcmp()与strcasecmp()的使用详解
2013/05/15 PHP
国外十大最流行的PHP框架排名
2013/07/04 PHP
thinkphp模板赋值与替换实例简述
2014/11/24 PHP
php版微信自动获取收货地址api用法示例
2016/09/22 PHP
php基于自定义函数记录log日志方法
2017/07/21 PHP
js 距离某一时间点时间是多少实现代码
2013/10/14 Javascript
jQuery的cookie插件实现保存用户登陆信息
2014/04/15 Javascript
js控制输入框获得和失去焦点时状态显示的方法
2015/01/30 Javascript
jQuery实现的鼠标经过时变宽的效果(附demo源码)
2016/04/28 Javascript
JavaScript手机振动API
2016/06/11 Javascript
JavaScript之WebSocket技术详解
2016/11/18 Javascript
详解JavaScript中数组的reduce方法
2016/12/02 Javascript
js canvas实现擦除效果示例代码
2017/04/26 Javascript
详解设置Webstorm 利用babel将ES6自动转码成ES5
2017/12/20 Javascript
vue ssr 指南详读
2018/06/29 Javascript
Vue动态创建注册component的实例代码
2019/06/14 Javascript
CKEditor 4.4.1 添加代码高亮显示插件功能教程【使用官方推荐Code Snippet插件】
2019/06/14 Javascript
Node.js操作MongoDB数据库实例分析
2020/01/19 Javascript
[03:11]不朽宝藏三外观展示
2020/09/18 DOTA
基于Python数据可视化利器Matplotlib,绘图入门篇,Pyplot详解
2017/10/13 Python
Python零基础入门学习之输入与输出
2019/04/03 Python
使用OpenCV实现仿射变换—旋转功能
2019/08/29 Python
Python容器使用的5个技巧和2个误区总结
2019/09/26 Python
python实现简单俄罗斯方块
2020/03/13 Python
解决python3中os.popen()出错的问题
2020/11/19 Python
python 如何读、写、解析CSV文件
2021/03/03 Python
Html5+JS实现手机摇一摇功能
2015/04/24 HTML / CSS
自荐信怎么写好
2013/11/11 职场文书
小区门卫管理制度
2014/01/29 职场文书
2014年消防工作实施方案
2014/02/20 职场文书
县政府领导班子“四风”方面突出问题整改措施
2014/09/23 职场文书
观看建国大业观后感
2015/06/01 职场文书
信息技术教研组工作总结
2015/08/13 职场文书
goland 恢复已更改文件的操作
2021/04/28 Golang