使用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服务器实现多session并发运行
Oct 09 PHP
PHP 采集心得技巧
May 15 PHP
基于php无限分类的深入理解
Jun 02 PHP
PHP连接MySQL查询结果中文显示乱码解决方法
Oct 25 PHP
php文字水印和php图片水印实现代码(二种加水印方法)
Dec 25 PHP
php使用curl和正则表达式抓取网页数据示例
Apr 13 PHP
android上传图片到PHP的过程详解
Aug 03 PHP
php实现的单一入口应用程序实例分析
Sep 23 PHP
浅谈php7的重大新特性
Oct 23 PHP
PHP中加速、缓存扩展的区别和作用详解(eAccelerator、memcached、xcache、APC )
Jul 09 PHP
php版微信公众平台入门教程之开发者认证的方法
Sep 26 PHP
thinkphp隐藏index.php/home并允许访问其他模块的实现方法
Oct 13 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
全文搜索和替换
2006/10/09 PHP
PHP投票系统防刷票判断流程分析
2012/02/04 PHP
php模拟ping命令(php exec函数的使用方法)
2013/10/25 PHP
thinkphp验证码显示不出来的解决方法
2014/03/29 PHP
Ajax中的JSON格式与php传输过程全面解析
2017/11/14 PHP
js switch case default 的用法示例介绍
2013/10/23 Javascript
js实现类似jquery里animate动画效果的方法
2015/04/10 Javascript
JavaScript实现对下拉列表值进行排序的方法
2015/07/15 Javascript
node.js操作mysql(增删改查)
2015/07/24 Javascript
分享jQuery插件的学习笔记
2016/01/14 Javascript
使用Ajax生成的Excel文件并下载的实例
2016/11/21 Javascript
微信小程序 引用其他js文件实现代码
2017/02/22 Javascript
浅谈Vuejs中nextTick()异步更新队列源码解析
2017/12/31 Javascript
原生JS实现获取及修改CSS样式的方法
2018/09/04 Javascript
详解webpack引入第三方库的方式以及注意事项
2019/01/15 Javascript
vue+element导航栏高亮显示的解决方式
2019/11/12 Javascript
Vue.js中的高级面试题及答案
2020/01/13 Javascript
Openlayers实现距离面积测量
2020/09/28 Javascript
python 提取文件的小程序
2009/07/29 Python
Python实现提取文章摘要的方法
2015/04/21 Python
Python实现数据库编程方法详解
2015/06/09 Python
详解Python中使用base64模块来处理base64编码的方法
2016/07/01 Python
Python实现连接postgresql数据库的方法分析
2017/12/27 Python
TensorFlow数据输入的方法示例
2018/06/19 Python
使用Python自动化破解自定义字体混淆信息的方法实例
2019/02/13 Python
python将excel转换为csv的代码方法总结
2019/07/03 Python
python高斯分布概率密度函数的使用详解
2019/07/10 Python
应用OpenCV和Python进行SIFT算法的实现详解
2019/08/21 Python
python实现与redis交互操作详解
2020/04/21 Python
python同时遍历两个list用法说明
2020/05/02 Python
Python定时任务APScheduler原理及实例解析
2020/05/30 Python
python3列表删除大量重复元素remove()方法的问题详解
2021/01/04 Python
教师校本培训方案
2014/02/26 职场文书
开工典礼策划方案
2014/05/23 职场文书
2014年最新离婚协议书范本
2014/10/11 职场文书
2016年班主任培训心得体会
2016/01/07 职场文书