php源码分析之DZX1.5字符串截断函数cutstr用法


Posted in PHP onJune 17, 2015

本文实例讲述了php源码分析之DZX1.5字符串截断函数cutstr用法。分享给大家供大家参考。具体分析如下:

<?php 
/**
 * 函数来源DZX1.5,文件所在 /source/function/function_core.php
 */
define('CHARSET','UTF-8');
function cutstr($string, $length, $dot="...") {
  if(strlen($string)<=$length) {
    return $string;
  }
  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];
    }
  }
  $pos = strrpos($strcut, chr(1));
  if($pos !== false) {
    $strcut = substr($strcut,0,$pos);
  }
  return $strcut.$dot;
}
$string = '测试数据库ablci102020@(#)!)!测试劳动力ddk';
echo cutstr($string,15);
/*End of php*/

运行结果如下:

测试数据库ablci1020...

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
针对初学PHP者的疑难问答(1)
Oct 09 PHP
PHP静态类
Nov 25 PHP
Gregarius中文日期格式问题解决办法
Apr 22 PHP
php学习笔记之 函数声明(二)
Jun 09 PHP
php array的学习笔记
May 16 PHP
php MessagePack介绍
Oct 06 PHP
php实现redis数据库指定库号迁移的方法
Jan 14 PHP
PHP读取txt文本文件并分页显示的方法
Mar 11 PHP
PHP单例模式简单用法示例
Jun 23 PHP
PHP数据库操作二:memcache用法分析
Aug 16 PHP
Swoole4.4协程抢占式调度器详解
May 23 PHP
PHP中国际化的字符串排序和比较对象详解
Aug 23 PHP
php源码分析之DZX1.5加密解密函数authcode用法
Jun 17 #PHP
php源码分析之DZX1.5随机数函数random用法
Jun 17 #PHP
php正则替换处理HTML页面的方法
Jun 17 #PHP
PHP排序算法类实例
Jun 17 #PHP
php准确获取文件MIME类型的方法
Jun 17 #PHP
php操作MongoDB类实例
Jun 17 #PHP
PHP实现的购物车类实例
Jun 17 #PHP
You might like
php获取远程文件内容的函数
2015/11/02 PHP
cakephp2.X多表联合查询join及使用分页查询的方法
2017/02/23 PHP
CSDN轮换广告图片轮换效果
2007/03/27 Javascript
jQuery+CSS3实现树叶飘落特效
2015/02/01 Javascript
jQuery实现带有上下控制按钮的简单多行滚屏效果代码
2015/09/04 Javascript
javascript弹性运动效果简单实现方法
2016/01/08 Javascript
EasyUI 结合JS导出Excel文件的实现方法
2016/11/10 Javascript
用director.js实现前端路由使用实例
2017/01/27 Javascript
Bootstrap 表单验证formValidation 实现远程验证功能
2017/05/17 Javascript
AngularJS监听ng-repeat渲染完成的两种方法
2018/01/16 Javascript
jquery 获取索引值在一定范围的列表方法
2018/01/25 jQuery
详解使用vue-admin-template的优化历程
2018/05/20 Javascript
基于vue实现一个禅道主页拖拽效果
2019/05/27 Javascript
微信小程序实现列表的横向滑动方式
2020/07/15 Javascript
js实现双色球效果
2020/08/02 Javascript
v-slot和slot、slot-scope之间相互替换实例
2020/09/04 Javascript
Python设计模式之单例模式实例
2014/04/26 Python
python3+selenium实现126邮箱登陆并发送邮件功能
2019/01/23 Python
分享8个非常流行的 Python 可视化工具包
2019/06/05 Python
python颜色随机生成器的实例代码
2020/01/10 Python
世界上最大的二手相机店:KEN
2017/05/17 全球购物
利物浦足球俱乐部官方网上商店:Liverpool FC Official Store
2018/01/13 全球购物
Lime Crime官网:美国一家主打梦幻精灵系的彩妆品牌
2019/03/22 全球购物
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?用contains来区分是否有重复的对象。还是都不用
2013/07/30 面试题
vue+django实现下载文件的示例
2021/03/24 Vue.js
高二英语教学反思
2014/01/19 职场文书
绘画专业自荐信范文
2014/02/23 职场文书
2014年三八妇女节活动总结
2014/03/01 职场文书
暑假社会实践心得体会
2014/09/02 职场文书
大学生就业协议书范本(适用于公司企业)
2014/10/07 职场文书
埃及王子观后感
2015/06/16 职场文书
增值税发票丢失证明
2015/06/19 职场文书
教师年度考核自我评鉴
2015/08/11 职场文书
2019入党申请书格式和范文
2019/06/25 职场文书
汽车销售合同文本
2019/08/08 职场文书
Pygame Draw绘图函数的具体使用
2021/11/17 Python