使用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 中dirname(_file_)讲解
Mar 18 PHP
PHP函数之日期时间函数date()使用详解
Sep 09 PHP
linux实现php定时执行cron任务详解
Dec 24 PHP
php json_encode()函数返回json数据实例代码
Oct 10 PHP
9条PHP编程小知识及易犯的小错误
Jan 22 PHP
PHP安装GeoIP扩展根据IP获取地理位置及计算距离的方法
Jul 01 PHP
PHP中模糊查询并关联三个select框
Jun 19 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
Nov 17 PHP
原生JS实现Ajax通过POST方式与PHP进行交互的方法示例
May 12 PHP
PHP7.1实现的AES与RSA加密操作示例
Jun 15 PHP
php curl获取https页面内容,不直接输出返回结果的设置方法
Jan 15 PHP
php变量与字符串的增删改查操作示例
May 07 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连接mysql是否成功的代码分享
2014/01/24 PHP
php常用的安全过滤函数集锦
2014/10/09 PHP
PHP错误Warning:mysql_query()解决方法
2015/10/24 PHP
PHP数组式访问接口ArrayAccess用法分析
2017/12/28 PHP
PHP实现简单日历类编写
2020/08/28 PHP
获取元素距离浏览器周边的位置的方法getBoundingClientRect
2013/04/17 Javascript
javascript实现dom动态创建省市纵向列表菜单的方法
2015/05/14 Javascript
创建你的第一个AngularJS应用的方法
2015/06/16 Javascript
jQuery设置单选按钮radio选中/不可用的实例代码
2016/06/24 Javascript
JSONP和批量操作功能的实现方法
2016/08/21 Javascript
bootstrap日期控件问题(双日期、清空等问题解决)
2017/04/19 Javascript
动态加载JavaScript文件的3种方式
2018/05/05 Javascript
AngularJS中的作用域实例分析
2018/05/16 Javascript
ES6入门教程之let、const的使用方法
2019/04/13 Javascript
vue-cli3 项目优化之通过 node 自动生成组件模板 generate View、Component
2019/04/30 Javascript
vue获取验证码倒计时组件
2019/08/26 Javascript
Vue 自定义指令实现一键 Copy功能
2019/09/16 Javascript
微信小程序8种数据通信的方式小结
2020/02/03 Javascript
让python的Cookie.py模块支持冒号做key的方法
2010/12/28 Python
如何使用Python实现斐波那契数列
2019/07/02 Python
python Event事件、进程池与线程池、协程解析
2019/10/25 Python
HTML5 拖放功能实现代码
2016/07/14 HTML / CSS
什么是静态路由,其特点是什么?什么是动态路由,其特点是什么?
2013/07/26 面试题
机关门卫岗位职责
2013/12/30 职场文书
应届生简历中的自我评价
2014/01/13 职场文书
中秋晚会活动方案
2014/08/31 职场文书
违章停车检讨书
2014/10/21 职场文书
本科毕业论文指导教师评语
2014/12/30 职场文书
党员公开承诺书2015
2015/01/21 职场文书
单位介绍信格式
2015/01/31 职场文书
2015财务年终工作总结范文
2015/05/22 职场文书
一波干货,会议主持词开场白范文
2019/05/06 职场文书
dubbo集成zipkin获取Traceid的实现
2021/07/26 Java/Android
使用 MybatisPlus 连接 SqlServer 数据库解决 OFFSET 分页问题
2022/04/22 SQL Server
Meta增速拉垮,元宇宙难当重任
2022/04/29 数码科技
PostgreSQL怎么创建分区表详解
2022/06/25 PostgreSQL