使用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 相关文章推荐
用ADODB来让PHP操作ACCESS数据库的方法
Dec 31 PHP
php adodb连接带密码access数据库实例,测试成功
May 14 PHP
php仿QQ验证码的实例分析
Jul 01 PHP
php实现文件下载实例分享
Jun 02 PHP
destoon在360浏览器下出现用户被强行注销的解决方法
Jun 26 PHP
php新浪微博登录接口用法实例
Dec 23 PHP
php中get_cfg_var()和ini_get()的用法及区别
Mar 04 PHP
学习php设计模式 php实现备忘录模式(Memento)
Dec 09 PHP
php如何执行非缓冲查询API
Jul 22 PHP
php高清晰度无损图片压缩功能的实现代码
Dec 09 PHP
Laravel框架FormRequest中重写错误处理的方法
Feb 18 PHP
PHP添加PNG图片背景透明水印操作类定义与用法示例
Mar 12 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之第六天
2006/10/09 PHP
使用PHP实现蜘蛛访问日志统计
2013/07/05 PHP
PHP插件PHPMailer发送邮件功能
2017/02/28 PHP
基于jquery的表头固定的若干方法
2011/01/27 Javascript
基于JavaScript实现 获取鼠标点击位置坐标的方法
2013/04/12 Javascript
div拖拽插件——JQ.MoveBox.js(自制JQ插件)
2013/05/17 Javascript
js获取下拉列表框中的value和text的值示例代码
2014/01/11 Javascript
jQuery实现购物车多物品数量的加减+总价计算
2014/06/06 Javascript
jquery常用操作小结
2014/07/21 Javascript
jQuery中的基本选择器用法学习教程
2016/04/14 Javascript
jQuery图片轮播插件——前端开发必看
2016/05/31 Javascript
javaScript 事件绑定、事件冒泡、事件捕获和事件执行顺序整理总结
2016/10/10 Javascript
自带气泡提示的vue校验插件(vue-verify-pop)
2017/04/07 Javascript
原生JS实现图片无缝滚动方法(附带封装的运动框架)
2017/10/01 Javascript
vue+vuex+axios实现登录、注册页权限拦截
2018/03/09 Javascript
在vue2.0中引用element-ui组件库的方法
2018/06/21 Javascript
Vue-cli3.x + axios 跨域方案踩坑指北
2019/07/04 Javascript
javascript实现商品图片放大镜
2019/11/28 Javascript
Windows下安装 node 的版本控制工具 nvm
2020/02/06 Javascript
JS实现数据动态渲染的竖向步骤条
2020/06/24 Javascript
js利用iframe实现选项卡效果
2020/08/09 Javascript
python计算最小优先级队列代码分享
2013/12/18 Python
python如何实现int函数的方法示例
2018/02/19 Python
Python操作Excel插入删除行的方法
2018/12/10 Python
python如何进行矩阵运算
2020/06/05 Python
html5指南-1.html5全局属性(html5 global attributes)深入理解
2013/01/07 HTML / CSS
利达恒信公司.NET笔试题面试题
2016/03/05 面试题
寒假思想汇报
2014/01/10 职场文书
大学生毕业求职信
2014/06/12 职场文书
2014年财务工作总结与计划
2014/12/08 职场文书
2014年大学宣传部工作总结
2014/12/19 职场文书
环保建议书作文300字
2015/09/14 职场文书
在 SQL 语句中处理 NULL 值的方法
2021/06/07 SQL Server
yolov5返回坐标的方法实例
2022/03/17 Python
Win10/Win11 任务栏替换成经典样式
2022/04/19 数码科技
mysql中关键词exists的用法实例详解
2022/06/10 MySQL