使用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应用程序来获取Web服务器的状态信息
Oct 09 PHP
打造计数器DIY三步曲(上)
Oct 09 PHP
php 高效率写法 推荐
Feb 21 PHP
PHP爆绝对路径方法收集整理
Sep 17 PHP
基于php验证码函数的使用示例
May 03 PHP
解析php二分法查找数组是否包含某一元素
May 23 PHP
php 字符串压缩方法比较示例
Jan 23 PHP
PHP实现生成透明背景的PNG缩略图函数分享
Jul 08 PHP
php获取Google机器人访问足迹的方法
Apr 15 PHP
简单谈谈php中的unicode和utf8编码
Jun 10 PHP
thinkPHP5 ACL用户权限模块用法详解
May 10 PHP
tp5 sum某个字段相加得到总数的例子
Oct 18 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 无限级分类学习参考之对ecshop无限级分类的解析 带详细注释
2010/03/23 PHP
如何取得中文字符串中出现次数最多的子串
2013/08/08 PHP
php时间戳格式化显示友好的时间函数分享
2014/10/21 PHP
简单解决微信文章图片防盗链问题
2016/12/17 PHP
php使用ftp实现文件上传与下载功能
2017/07/21 PHP
php删除一个路径下的所有文件夹和文件的方法
2018/02/07 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
2020/04/05 PHP
Jquery Uploadify多文件上传带进度条且传递自己的参数
2013/08/28 Javascript
js单例模式的两种方案
2013/10/22 Javascript
JavaScript中使用arguments获得函数传参个数实例
2014/08/27 Javascript
angularjs 源码解析之injector
2016/08/22 Javascript
详解自动生成博客目录案例
2016/12/09 Javascript
使用vue和datatables进行表格的服务器端分页实例代码
2017/06/07 Javascript
Express下采用bcryptjs进行密码加密的方法
2018/02/07 Javascript
React-router4路由监听的实现
2018/08/07 Javascript
详解写好JS条件语句的5条守则
2019/02/28 Javascript
js实现删除li标签一行内容
2019/04/16 Javascript
重学JS之显示强制类型转换详解
2019/06/30 Javascript
vue-router的钩子函数用法实例分析
2019/10/26 Javascript
python获取Linux下文件版本信息、公司名和产品名的方法
2014/10/05 Python
在Python的Django框架中生成CSV文件的方法
2015/07/22 Python
用Python实现读写锁的示例代码
2018/11/05 Python
详解pandas删除缺失数据(pd.dropna()方法)
2019/06/25 Python
Python 占位符的使用方法详解
2019/07/10 Python
jupyter notebook 增加kernel教程
2020/04/10 Python
CSS3中引入多种自定义字体font-face
2020/06/12 HTML / CSS
html5 Canvas画图教程(2)—画直线与设置线条的样式如颜色/端点/交汇点
2013/01/09 HTML / CSS
佳能德国网上商店:Canon德国
2017/03/18 全球购物
巴西补充剂和维生素购物网站:Natue
2019/06/17 全球购物
英国第一的滑雪服装和装备零售商:Snow+Rock
2020/02/01 全球购物
接口中的方法可以是abstract的吗
2015/07/23 面试题
什么是servlet链?
2014/07/13 面试题
2015年简历自我评价范文
2015/03/11 职场文书
经销商会议开幕词
2016/03/04 职场文书
如何用JavaScript实现一个数组惰性求值库
2021/05/05 Javascript
Windows Server 2012 R2 磁盘分区教程
2022/04/29 Servers