使用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+APACHE实现用户论证的方法
Oct 09 PHP
function.inc.php超越php
Dec 09 PHP
PHP函数常用用法小结
Feb 08 PHP
php 提速工具eAccelerator 配置参数详解
May 16 PHP
php面象对象数据库操作类实例
Dec 02 PHP
php从数组中随机选择若干不重复元素的方法
Mar 14 PHP
php数组比较实现查找连续数的方法
Jul 29 PHP
WordPress开发中的get_post_custom()函数使用解析
Jan 04 PHP
php结合mysql与mysqli扩展处理事务的方法
Jun 29 PHP
php版微信公众平台回复中文出现乱码问题的解决方法
Sep 22 PHP
PHP验证终端类型是否为手机的简单实例
Feb 07 PHP
浅谈php常用的7大框架的优缺点
Jul 20 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生成唯一的订单函数分享
2015/02/02 PHP
PHP中$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的区别分析
2017/07/03 PHP
学习ExtJS(二) Button常用方法
2009/10/07 Javascript
jQuery 树形结构的选择器
2010/02/15 Javascript
jquery键盘事件介绍
2011/01/31 Javascript
window.requestAnimationFrame是什么意思,怎么用
2013/01/13 Javascript
js实现弹窗插件功能实例代码分享
2013/12/12 Javascript
使用upstart把nodejs应用封装为系统服务实例
2014/06/01 NodeJs
Bootstrap组件(一)之菜单
2016/05/11 Javascript
JS实现简单的tab切换选项卡效果
2016/09/21 Javascript
AngularJS 应用身份认证的技巧总结
2016/11/07 Javascript
jquery无法为动态生成的元素添加点击事件的解决方法(推荐)
2016/12/26 Javascript
Mac下安装vue
2018/04/11 Javascript
Vue中的v-for循环key属性注意事项小结
2018/08/12 Javascript
js变量声明var使用与不使用的区别详解
2019/01/21 Javascript
JS实现“全选”和&quot;全不选&quot;功能代码实例
2020/02/06 Javascript
prettier自动格式化去换行的实现代码
2020/08/25 Javascript
python登录豆瓣并发帖的方法
2015/07/08 Python
python 实现网上商城,转账,存取款等功能的信用卡系统
2016/07/15 Python
python3.6使用pymysql连接Mysql数据库
2018/05/25 Python
Pandas时间序列基础详解(转换,索引,切片)
2020/02/26 Python
Python selenium爬取微博数据代码实例
2020/05/22 Python
Keras—embedding嵌入层的用法详解
2020/06/10 Python
澳大利亚在线时尚精品店:Hello Molly
2018/02/26 全球购物
美国糖果店:Sugarfina
2019/02/21 全球购物
美国花园雕像和家居装饰网上商店:Design Toscano
2019/03/09 全球购物
GAZMAN官网:澳大利亚领先的男装品牌
2019/12/19 全球购物
拉夫劳伦爱尔兰官方网站:Ralph Lauren爱尔兰
2020/04/10 全球购物
Strathberry苏贝瑞中国官网:西班牙高级工匠手工打造
2020/10/19 全球购物
2014年劳动部工作总结
2014/12/11 职场文书
工作表扬信
2015/01/17 职场文书
2015年国庆节寄语
2015/08/17 职场文书
《海上日出》教学反思
2016/02/23 职场文书
Mysql - 常用函数 每天积极向上
2021/04/05 MySQL
MySQL慢查询的坑
2021/04/28 MySQL
把77A收信机改造成收音机
2022/04/05 无线电