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源码之 ext/mysql扩展部分
Jul 17 PHP
在MongoDB中模拟Auto Increment的php代码
Mar 06 PHP
CI框架中集成CKEditor编辑器的教程
Jun 09 PHP
异步加载技术实现当滚动条到最底部的瀑布流效果
Sep 16 PHP
php设置静态内容缓存时间的方法
Dec 01 PHP
php可扩展的验证类实例(可对邮件、手机号、URL等验证)
Jul 09 PHP
PHP利用imagick生成组合缩略图
Feb 19 PHP
PHP实现查询两个数组中不同元素的方法
Feb 23 PHP
Zend Framework教程之Autoloading用法详解
Mar 08 PHP
Yii2框架可逆加密简单实现方法
Aug 25 PHP
PHP简单实现二维数组的矩阵转置操作示例
Nov 24 PHP
laravel 实现向公共模板中传值 (view composer)
Oct 22 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
使用sockets:从新闻组中获取文章(二)
2006/10/09 PHP
php 使用GD库为页面增加水印示例代码
2014/03/24 PHP
Yii中使用PHPExcel导出Excel的方法
2014/12/26 PHP
php内存缓存实现方法
2015/01/24 PHP
PHP连接MYSQL数据库实例代码
2016/01/20 PHP
mac os快速切换多个PHP版本的方法
2017/03/07 PHP
PHP添加文字水印或图片水印的水印类完整源代码与使用示例
2019/03/18 PHP
浏览器脚本兼容 文本框中,回车键触发事件的兼容
2010/06/21 Javascript
jQuery.each()用法分享
2012/07/31 Javascript
JQuery入门——移除绑定事件unbind方法概述及应用
2013/02/05 Javascript
JavaScript表达式:URL 协议介绍
2013/03/10 Javascript
13个PHP函数超实用
2015/10/21 Javascript
bootstrap3 兼容IE8浏览器!
2016/05/02 Javascript
深入理解jQuery 事件处理
2016/06/14 Javascript
Javascript学习之谈谈JS的全局变量跟局部变量(推荐)
2016/08/28 Javascript
原生js实现购物车
2020/09/23 Javascript
[09:37]DOTA2卡尔工作室 英雄介绍圣堂刺客篇
2013/06/13 DOTA
[57:50]DOTA2上海特级锦标赛主赛事日 - 4 胜者组决赛Secret VS Liquid第二局
2016/03/05 DOTA
Python的Urllib库的基本使用教程
2015/04/30 Python
八大排序算法的Python实现
2021/01/28 Python
总结网络IO模型与select模型的Python实例讲解
2016/06/27 Python
django 删除数据库表后重新同步的方法
2018/05/27 Python
对python 中re.sub,replace(),strip()的区别详解
2019/07/22 Python
使用tensorflow根据输入更改tensor shape
2020/06/23 Python
详解Django关于StreamingHttpResponse与FileResponse文件下载的最优方法
2021/01/07 Python
英国在线电子和小工具商店:TecoBuy
2018/10/06 全球购物
Spotahome意大利:公寓和房间出租
2020/02/21 全球购物
建筑工程技术应届生求职信
2013/11/17 职场文书
干部现实表现材料
2014/02/13 职场文书
施工安全汇报材料
2014/08/17 职场文书
小学班级管理心得体会
2016/01/07 职场文书
高三数学复习备考教学反思
2016/02/18 职场文书
教你用Python+selenium搭建自动化测试环境
2021/06/18 Python
Vue+Flask实现图片传输功能
2022/04/01 Vue.js
Ruby GDBM操作简介及数据存储原理
2022/04/19 Ruby
Web应用开发TypeScript使用详解
2022/05/25 Javascript