使用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类
Apr 09 PHP
php Memcache 中实现消息队列
Nov 24 PHP
PHP 手机归属地查询 api
Feb 08 PHP
上传文件先创建目录 再上传到目录里面去
Dec 29 PHP
PHP curl模拟浏览器采集阿里巴巴的实现代码
Apr 20 PHP
php变量作用域的深入解析
Jun 03 PHP
php采集自中央气象台范围覆盖全国的天气预报代码实例
Jan 04 PHP
使用WordPress发送电子邮件的相关PHP函数用法解析
Dec 15 PHP
PHP使用finfo_file()函数检测上传图片类型的实现方法
Apr 18 PHP
ThinkPHP+EasyUI之ComboTree中的会计科目树形菜单实现方法
Jun 09 PHP
PHP实现模拟http请求的方法分析
Dec 20 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
Mar 30 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 文章采集正则代码
2009/12/28 PHP
浅谈web上存漏洞及原理分析、防范方法(文件名检测漏洞)
2013/06/29 PHP
php教程之魔术方法的使用示例(php魔术函数)
2014/02/12 PHP
PHP分页类集锦
2014/11/18 PHP
使用PHP生成二维码的方法汇总
2015/07/22 PHP
使用PHP实现下载CSS文件中的图片
2015/12/06 PHP
php中static 静态变量和普通变量的区别
2016/12/01 PHP
javascript 获取所有id中包含某关键字的控件的实现代码
2010/11/25 Javascript
html+js实现动态显示本地时间
2013/09/21 Javascript
网页运行时提示对象不支持abigimage属性或方法
2014/08/10 Javascript
jQuery实现防止提交按钮被双击的方法
2015/03/24 Javascript
Node.js的Express框架使用上手指南
2016/03/12 Javascript
jQuery插件Validation快速完成表单验证的方式
2016/07/28 Javascript
JS输出空格的简单实现方法
2016/09/08 Javascript
jQuery实现可兼容IE6的淡入淡出效果告警提示功能示例
2017/09/20 jQuery
使用vue中的v-for遍历二维数组的方法
2018/03/07 Javascript
小程序开发基础之view视图容器
2018/08/21 Javascript
在 Vue-CLI 中引入 simple-mock实现简易的 API Mock 接口数据模拟
2018/11/28 Javascript
浅谈Vue服务端渲染框架Nuxt的那些事
2018/12/21 Javascript
javascript+HTML5 canvas绘制时钟功能示例
2019/05/15 Javascript
基于ssm框架实现layui分页效果
2019/07/27 Javascript
通过vue刷新左侧菜单栏操作
2020/08/06 Javascript
[01:00:11]DOTA2-DPC中国联赛 正赛 CDEC vs DLG BO3 第一场 2月7日
2021/03/11 DOTA
Python进阶:生成器 懒人版本的迭代器详解
2019/06/29 Python
python批量读取文件名并写入txt文件中
2020/09/05 Python
Python手绘可视化工具cutecharts使用实例
2019/12/05 Python
劳动工资科岗位职责范本
2014/03/02 职场文书
建筑安全员岗位职责
2014/03/13 职场文书
校运动会广播稿(100篇)
2014/09/12 职场文书
卖车协议书范例
2014/09/16 职场文书
交通处罚决定书
2015/06/24 职场文书
运动会开幕式主持词
2015/07/01 职场文书
该怎么书写道歉信?
2019/07/03 职场文书
3招让你摆脱即兴讲话冷场尴尬
2019/08/08 职场文书
nginx基于域名,端口,不同IP的虚拟主机设置的实现
2021/03/31 Servers
laravel ajax curd 搜索登录判断功能的实现
2021/04/17 PHP