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 相关文章推荐
解决MySQL中文输出变成问号的问题
Jun 05 PHP
PHP页面间传递参数实例代码
Jun 05 PHP
PHP为表单获取的URL 地址预设 http 字符串函数代码
May 26 PHP
PHP实现多图片上传类实例
Jul 26 PHP
php获取根域名方法汇总
Oct 28 PHP
深入解析PHP的Yii框架中的event事件机制
Mar 17 PHP
php curl获取https页面内容,不直接输出返回结果的设置方法
Jan 15 PHP
thinkphp5使用无限极分类
Feb 18 PHP
php输出控制函数和输出函数生成静态页面
Jun 27 PHP
PHP实现统计代码行数小工具
Sep 19 PHP
修改Laravel自带的认证系统的User类的命名空间的步骤
Oct 15 PHP
Thinkphp 框架扩展之标签库驱动原理与用法分析
Apr 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图像处理类代码分享
2012/01/19 PHP
ThinkPHP的L方法使用简介
2014/06/18 PHP
微信开发之网页授权获取用户信息(二)
2016/01/08 PHP
php实现无限级分类查询(递归、非递归)
2016/03/10 PHP
phpStorm+XDebug+chrome 配置详解
2019/04/01 PHP
JS location几个方法小姐
2008/07/09 Javascript
DIV菜单层实现代码
2010/11/19 Javascript
Struts2的s:radio标签使用及用jquery添加change事件
2013/04/08 Javascript
jquery.cookie() 方法的使用(读取、写入、删除)
2013/12/05 Javascript
JavaScript学习总结之JS、AJAX应用
2016/01/29 Javascript
GitHub上一些实用的JavaScript的文件压缩解压缩库推荐
2016/03/13 Javascript
关于微信中a链接无法跳转问题
2016/08/02 Javascript
jQuery EasyUI编辑DataGrid用combobox实现多级联动
2016/08/29 Javascript
jq给页面添加覆盖层遮罩的实例
2017/02/16 Javascript
Mobile Web开发基础之四--处理手机设备的横竖屏问题
2017/08/11 Javascript
vue使用Proxy实现双向绑定的方法示例
2019/03/20 Javascript
JQuery事件委托原理与用法实例分析
2019/05/13 jQuery
VUE组件中的 Drawer 抽屉实现代码
2019/08/06 Javascript
nodejs使用node-xlsx生成excel的方法示例
2019/08/22 NodeJs
Node绑定全局TraceID的实现方法
2019/11/14 Javascript
[27:53]2014 DOTA2华西杯精英邀请赛 5 24 NewBee VS iG
2014/05/26 DOTA
Python with用法实例
2015/04/14 Python
Python中计算三角函数之cos()方法的使用简介
2015/05/15 Python
python实现的简单抽奖系统实例
2015/05/22 Python
Python中基本的日期时间处理的学习教程
2015/10/16 Python
判断网页编码的方法python版
2016/08/12 Python
利用django如何解析用户上传的excel文件
2017/07/24 Python
Python实现Dijkstra算法
2018/10/17 Python
PyQt5下拉式复选框QComboCheckBox的实例
2019/06/25 Python
Win10用vscode打开anaconda环境中的python出错问题的解决
2020/05/25 Python
keras 获取某层的输入/输出 tensor 尺寸操作
2020/06/10 Python
python 动态绘制爱心的示例
2020/09/27 Python
CSS类名支持中文命名的示例
2014/04/04 HTML / CSS
css3新单位vw、vh的使用教程
2018/03/23 HTML / CSS
加拿大鞋子连锁店:Town Shoes
2016/09/26 全球购物
2014年信息技术工作总结
2014/12/16 职场文书