使用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
完美解决dedecms中的[html][/html]和[code][/code]问题
Mar 20 PHP
PHP与MySQL开发中页面乱码的产生与解决
Mar 27 PHP
php 字符转义 注意事项
May 27 PHP
PHP 处理图片的类实现代码
Oct 23 PHP
探讨:web上存漏洞及原理分析、防范方法
Jun 29 PHP
php计算整个mysql数据库大小的方法
Jun 19 PHP
yii去掉必填项中星号的方法
Dec 28 PHP
django中的ajax组件教程详解
Oct 18 PHP
thinkPHP框架乐观锁和悲观锁实例分析
Oct 30 PHP
php 自定义函数实现将数据 以excel 表格形式导出示例
Nov 13 PHP
php自动加载代码实例详解
Feb 26 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下通过IP获取地理位置的代码(小偷程序)
2011/06/09 PHP
PHP实现的简单分页类及用法示例
2016/05/06 PHP
Yii CGridView用法实例详解
2016/07/12 PHP
js模拟点击事件实现代码
2012/11/06 Javascript
用表格输出1-1000之间的数字实现代码(附特效)
2013/04/21 Javascript
javascript中的Base64、UTF8编码与解码详解
2015/03/18 Javascript
JavaScript中各种引用类型的常用操作方法小结
2016/05/05 Javascript
jQuery自制提示框tooltip改进版
2016/08/01 Javascript
js实现五星评价功能
2017/03/08 Javascript
详解vue组件化开发-vuex状态管理库
2017/04/10 Javascript
Vue 2.0的数据依赖实现原理代码简析
2017/07/10 Javascript
解决jquery有正确返回值但不执行success函数的问题
2018/08/20 jQuery
Vue2.0 v-for filter列表过滤功能的实现
2018/09/07 Javascript
Electron 如何调用本地模块的方法
2019/02/01 Javascript
详解vue之自行实现派发与广播(dispatch与broadcast)
2021/01/19 Vue.js
Python设计模式之代理模式实例
2014/04/26 Python
python分析nignx访问日志脚本分享
2015/02/26 Python
Python的装饰器用法学习笔记
2016/06/24 Python
解决python使用open打开文件中文乱码的问题
2017/12/29 Python
pyqt5自定义信号实例解析
2018/01/31 Python
python抓取京东小米8手机配置信息
2018/11/13 Python
python 输出所有大小写字母的方法
2019/01/02 Python
浅谈python的输入输出,注释,基本数据类型
2019/04/02 Python
Django中提供的6种缓存方式详解
2019/08/05 Python
python线程池如何使用
2020/05/28 Python
CSS3实现的炫酷菜单代码分享
2015/03/12 HTML / CSS
htnl5利用svg页面高斯模糊的方法
2018/07/20 HTML / CSS
蔻驰西班牙官网:COACH西班牙
2019/01/16 全球购物
工程管理造价应届生求职信
2013/11/13 职场文书
监理资料员岗位职责
2014/01/03 职场文书
应聘面试自我评价
2014/01/24 职场文书
致标枪运动员加油稿
2014/02/15 职场文书
俄语专业毕业生求职信
2014/07/12 职场文书
2014年妇联工作总结
2014/11/21 职场文书
为什么MySQL不建议使用SELECT *
2022/04/03 MySQL
Python通过loop.run_in_executor执行同步代码 同步变为异步
2022/04/11 Python