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

/**

* 函数来源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 cut截取字符串,php源码分析之DZX1.5字符串截断函数cutstr用法相关推荐

  1. 【FFmpeg】ffmpeg工具源码分析(一):main函数

    ffmpeg工具经常用来转换.生成媒体文件,下面是它的源码分析(一):main函数 ffmpeg版本:4.2.1 int main(int argc, char **argv) {int i, ret ...

  2. LwIP源码分析(2):tcpip_init和tcpip_thread函数分析

    环境:FreeRTOS & LwIP 2.2.0 文章中的所有参数检测的断言代码都删除以使代码更清晰 LwIP通过调用tcpip_init来初始化TCPIP协议栈,函数如下所示,函数中代码的含 ...

  3. obs源码分析【一】:main函数

    目录 main函数在哪里 obs项目架构 main函数浅析 crash的处理 obs配置 obs log 网络请求libcurl 主界面 Qt适配高dpi屏幕 总结   最近对obs的代码感兴趣了,在 ...

  4. 【glibc源码分析】--strcpy.c 字符串复制

    strcpy是常用的字符串复制函数,经常在面试中考到.该文件位于glibc源码的string目录中. 在线资源路径: http://www.oschina.net/code/explore/glibc ...

  5. c语言追加字符串_Redis源码解析二--简单动态字符串

    Redis 简单动态字符串 1.介绍 Redis兼容传统的C语言字符串类型,但没有直接使用C语言的传统的字符串(以'0'结尾的字符数组)表示,而是自己构建了一种名为简单动态字符串(simple dyn ...

  6. rt-thread源码分析篇十八:rt_system_scheduler_start函数分析

    一.rt_system_scheduler_start源码 {register struct rt_thread *to_thread;register rt_ubase_t highest_read ...

  7. Nginx源码分析--数据对齐posix_memalign和memalign函数

    posix_memalign函数() /*  * 背景:  *      1)POSIX 1003.1d  *      2)POSIX 标明了通过malloc( ), calloc( ), 和 re ...

  8. FFMPEG源码分析:avformat_open_input()(媒体打开函数)

    本文分析了FFMPEG中的媒体打开函数avformat_open_input() //参数ps包含一切媒体相关的上下文结构,有它就有了一切,本函数如果打开媒体成功, //会返回一个AVFormatCo ...

  9. Nginx 源码分析

    1.工程 ngx_conf_file.c ngx_connection.c ngx_cycle.c ngx_file.h ngx_module.c ngx_open_file_cache.h ngx_ ...

最新文章

  1. 鸿蒙生死印里的声音是谁,逆天邪神:喊逆玄的确实是黎娑,鸿蒙生死印应该也是活物...
  2. filebeat成精之路
  3. Node.js学习笔记(一)
  4. Eclipse 3.7 安装Maven插件时报错:requires 'bundle org.slf4j.api 1.6.2' but it could not be found...
  5. 浏览器兼容_查成绩浏览器不兼容怎么办?
  6. NSTimer不准确与GCDTimer详解
  7. epoll监听文件_介绍一下 Android Handler 中的 epoll 机制?
  8. aws dynamodb_如何使用AWS Lambda将DynamoDB集成到您的API中
  9. 如何搜索旅行的好地方(MongoDb LINQ和.NET Core)
  10. 用户授信额度管理中,会运用到哪些策略?
  11. rocketMq错误日志所在位置
  12. 消息生产与消息存储——kafka源码探究之三
  13. Devart Excel Addins 2.5.660 插件 Crack
  14. Python简单电影推荐算法原理实现
  15. pycharm5.0.3在用QQ输入法候选框不跟随解决方法
  16. 计算机屏幕刷新频率,屏幕刷新率多少合适,教您电脑屏幕刷新率多少合适
  17. Win7安装VMware
  18. 音视频流媒体————基本概念
  19. 利用java计算长方形的面积
  20. 那些 996 公司的员工怎么样了?

热门文章

  1. 《智能计算系统》课程报告——《An Efficient FPGA Accelerator Optimized for High Throughput Sparse CNN Inference》学习笔记
  2. FaceBoxes的学习笔记
  3. bat文件如何获取输入内容并写入文件
  4. 使用html+css仿搜狐网址页面布局
  5. Lucene全文检索_分词_复杂搜索_中文分词器
  6. CLRS10.1-6练习 - 用双栈实现队列
  7. HDU - 1757 A Simple Math Problem (矩阵快速幂)
  8. NFV-Bench A Dependability Benchmark for Network Function Virtualization Systems
  9. 路由的跳转 , 动态路由的配置
  10. OC正则表达式的使用