使用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 相关文章推荐
JAVA/JSP学习系列之四
Oct 09 PHP
PHP安装问题
Oct 09 PHP
php 魔术方法使用说明
Oct 20 PHP
Views rows style模板重写代码
May 16 PHP
php截取后台登陆密码的代码
May 05 PHP
PHP循环输出指定目录下的所有文件和文件夹路径例子(简单实用)
May 10 PHP
ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法
Jun 25 PHP
php将字符串全部转换成大写或者小写的方法
Mar 17 PHP
phplist及phpmailer(组合使用)通过gmail发送邮件的配置方法
Mar 30 PHP
PHP版本的选择5.2.17 5.3.27 5.3.28 5.4 5.5兼容性问题分析
Apr 04 PHP
PHP实现多级分类生成树的方法示例
Feb 07 PHP
基于ThinkPHP5框架使用QueryList爬取并存入mysql数据库操作示例
May 25 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与XML的PDF文档生成技术
2006/10/09 PHP
PHP基础教程(php入门基础教程)一些code代码
2013/01/06 PHP
javaScript 数值型和字符串型之间的转换
2009/07/25 Javascript
40款非常棒的jQuery 插件和制作教程(系列二)
2011/11/02 Javascript
JavaScript中的this关键字使用方法总结
2015/03/13 Javascript
原生javascript实现自动更新的时间日期
2016/02/12 Javascript
谈谈JavaScript的New关键字
2016/08/26 Javascript
解析js如何获取css样式
2016/12/11 Javascript
Node.js中文件操作模块File System的详细介绍
2017/01/05 Javascript
Vue 页面跳转不用router-link的实现代码
2018/04/12 Javascript
Echarts动态加载多条折线图的实现代码
2019/05/24 Javascript
微信小游戏之使用three.js 绘制一个旋转的三角形
2019/06/10 Javascript
用 js 写一个 js 解释器过程详解
2019/08/02 Javascript
Angular5整合富文本编辑器TinyMCE的方法(汉化+上传)
2020/05/26 Javascript
在Python中使用判断语句和循环的教程
2015/04/25 Python
python插入数据到列表的方法
2015/04/30 Python
Python制作简单的网页爬虫
2015/11/22 Python
python脚本设置超时机制系统时间的方法
2016/02/21 Python
python制作websocket服务器实例分享
2016/11/20 Python
Python编程快速上手——Excel到CSV的转换程序案例分析
2020/02/28 Python
python 简单的调用有道翻译
2020/11/25 Python
python实现跨年表白神器--你值得拥有
2021/01/04 Python
关于探究python中sys.argv时遇到的问题详解
2021/02/23 Python
浅析rem和em和px vh vw和% 移动端长度单位
2016/04/28 HTML / CSS
AmazeUI 点击元素显示全屏的实现
2020/08/25 HTML / CSS
联想瑞士官方网站:Lenovo Switzerland
2017/11/19 全球购物
女性时尚在线:IVRose
2019/02/23 全球购物
Java面试题及答案
2012/09/08 面试题
main 函数执行以前,还会执行什么代码
2013/04/17 面试题
社区党总支书记先进事迹材料
2014/01/24 职场文书
大二学生职业生涯规划书
2014/02/05 职场文书
2014年师德师风工作总结
2014/11/25 职场文书
物业保洁员岗位职责
2015/02/13 职场文书
工作迟到检讨书范文
2015/05/06 职场文书
《酸的和甜的》教学反思
2016/02/18 职场文书
Spring Data JPA框架自定义Repository接口
2022/04/28 Java/Android