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求最大子序列和的算法实现
Jun 24 PHP
PHP定时执行计划任务的多种方法小结
Dec 19 PHP
选择PHP作为网站开发语言的原因分享
Jan 03 PHP
php图片加水印原理(超简单的实例代码)
Jan 18 PHP
关于Iframe如何跨域访问Cookie和Session的解决方法
Apr 15 PHP
PHP计算一年多少个星期和每周的开始和结束日期
Jul 01 PHP
PHP技术开发微信公众平台
Jul 22 PHP
深入理解PHP变量的值类型和引用类型
Oct 21 PHP
详谈PHP程序Laravel 5框架的优化技巧
Jul 18 PHP
基于PHPexecl类生成复杂的报表表头示例
Oct 14 PHP
PHP实现字符串的全排列详解
Apr 24 PHP
如何在centos8自定义目录安装php7.3
Nov 28 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
图解上海144收音机
2021/03/02 无线电
浅谈Windows下 PHP4.0与oracle 8的连接设置
2006/10/09 PHP
php仿ZOL分页类代码
2008/10/02 PHP
解析php安全性问题中的:Null 字符问题
2013/06/21 PHP
PHP检测移动设备类mobile detection使用实例
2014/04/14 PHP
js常用排序实现代码
2010/12/28 Javascript
jquery判断至少有一个checkbox被选中的方法
2015/06/05 Javascript
js插件dropload上拉下滑加载数据实例解析
2016/07/27 Javascript
JavaScript 监控微信浏览器且自带返回按钮时间
2016/11/27 Javascript
JS实现页面跳转参数不丢失的方法
2016/11/28 Javascript
JS树形菜单组件Bootstrap TreeView使用方法详解
2016/12/21 Javascript
vue子父组件通信的实现代码
2017/07/09 Javascript
nuxt中使用路由守卫的方法步骤
2019/01/27 Javascript
Vue多环境代理配置方法思路详解
2019/06/21 Javascript
微信小程序获取用户信息及手机号(后端TP5.0)
2019/09/12 Javascript
JS制作简易计算器的实例代码
2020/07/04 Javascript
详解Howler.js Web音频播放终极解决方案
2020/08/23 Javascript
利用 JavaScript 实现并发控制的示例代码
2020/12/31 Javascript
Nodejs 微信小程序消息推送的实现
2021/01/20 NodeJs
深度剖析使用python抓取网页正文的源码
2014/06/11 Python
python实现自动重启本程序的方法
2015/07/09 Python
浅谈Python中chr、unichr、ord字符函数之间的对比
2016/06/16 Python
python检查URL是否正常访问的小技巧
2017/02/25 Python
Python tkinter label 更新方法
2018/10/11 Python
python仿抖音表白神器
2019/04/08 Python
英国创新设计文具、卡片和礼品包装网站:Paperchase
2018/07/14 全球购物
Abbacino官网:包、钱包和女士配饰
2019/04/15 全球购物
LN-CC英国:伦敦时尚生活的缩影
2019/09/01 全球购物
澳大利亚体育和露营装备在线/实体零售商:Find Sports
2020/06/03 全球购物
2014年党务公开方案
2014/05/08 职场文书
防灾减灾活动总结
2014/08/30 职场文书
小学向国旗敬礼活动方案
2014/09/27 职场文书
考试作弊检讨书1000字(5篇)
2014/10/19 职场文书
二年级学生期末评语
2014/12/26 职场文书
捐书活动倡议书
2015/04/27 职场文书
Python时间操作之pytz模块使用详解
2022/06/14 Python