php cut截取字符串,php源码分析之DZX1.5字符串截断函数cutstr用法
本文实例讲述了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用法相关推荐
- 【FFmpeg】ffmpeg工具源码分析(一):main函数
ffmpeg工具经常用来转换.生成媒体文件,下面是它的源码分析(一):main函数 ffmpeg版本:4.2.1 int main(int argc, char **argv) {int i, ret ...
- LwIP源码分析(2):tcpip_init和tcpip_thread函数分析
环境:FreeRTOS & LwIP 2.2.0 文章中的所有参数检测的断言代码都删除以使代码更清晰 LwIP通过调用tcpip_init来初始化TCPIP协议栈,函数如下所示,函数中代码的含 ...
- obs源码分析【一】:main函数
目录 main函数在哪里 obs项目架构 main函数浅析 crash的处理 obs配置 obs log 网络请求libcurl 主界面 Qt适配高dpi屏幕 总结 最近对obs的代码感兴趣了,在 ...
- 【glibc源码分析】--strcpy.c 字符串复制
strcpy是常用的字符串复制函数,经常在面试中考到.该文件位于glibc源码的string目录中. 在线资源路径: http://www.oschina.net/code/explore/glibc ...
- c语言追加字符串_Redis源码解析二--简单动态字符串
Redis 简单动态字符串 1.介绍 Redis兼容传统的C语言字符串类型,但没有直接使用C语言的传统的字符串(以'0'结尾的字符数组)表示,而是自己构建了一种名为简单动态字符串(simple dyn ...
- rt-thread源码分析篇十八:rt_system_scheduler_start函数分析
一.rt_system_scheduler_start源码 {register struct rt_thread *to_thread;register rt_ubase_t highest_read ...
- Nginx源码分析--数据对齐posix_memalign和memalign函数
posix_memalign函数() /* * 背景: * 1)POSIX 1003.1d * 2)POSIX 标明了通过malloc( ), calloc( ), 和 re ...
- FFMPEG源码分析:avformat_open_input()(媒体打开函数)
本文分析了FFMPEG中的媒体打开函数avformat_open_input() //参数ps包含一切媒体相关的上下文结构,有它就有了一切,本函数如果打开媒体成功, //会返回一个AVFormatCo ...
- Nginx 源码分析
1.工程 ngx_conf_file.c ngx_connection.c ngx_cycle.c ngx_file.h ngx_module.c ngx_open_file_cache.h ngx_ ...
最新文章
- 鸿蒙生死印里的声音是谁,逆天邪神:喊逆玄的确实是黎娑,鸿蒙生死印应该也是活物...
- filebeat成精之路
- Node.js学习笔记(一)
- Eclipse 3.7 安装Maven插件时报错:requires 'bundle org.slf4j.api 1.6.2' but it could not be found...
- 浏览器兼容_查成绩浏览器不兼容怎么办?
- NSTimer不准确与GCDTimer详解
- epoll监听文件_介绍一下 Android Handler 中的 epoll 机制?
- aws dynamodb_如何使用AWS Lambda将DynamoDB集成到您的API中
- 如何搜索旅行的好地方(MongoDb LINQ和.NET Core)
- 用户授信额度管理中,会运用到哪些策略?
- rocketMq错误日志所在位置
- 消息生产与消息存储——kafka源码探究之三
- Devart Excel Addins 2.5.660 插件 Crack
- Python简单电影推荐算法原理实现
- pycharm5.0.3在用QQ输入法候选框不跟随解决方法
- 计算机屏幕刷新频率,屏幕刷新率多少合适,教您电脑屏幕刷新率多少合适
- Win7安装VMware
- 音视频流媒体————基本概念
- 利用java计算长方形的面积
- 那些 996 公司的员工怎么样了?
热门文章
- 《智能计算系统》课程报告——《An Efficient FPGA Accelerator Optimized for High Throughput Sparse CNN Inference》学习笔记
- FaceBoxes的学习笔记
- bat文件如何获取输入内容并写入文件
- 使用html+css仿搜狐网址页面布局
- Lucene全文检索_分词_复杂搜索_中文分词器
- CLRS10.1-6练习 - 用双栈实现队列
- HDU - 1757 A Simple Math Problem (矩阵快速幂)
- NFV-Bench A Dependability Benchmark for Network Function Virtualization Systems
- 路由的跳转 , 动态路由的配置
- OC正则表达式的使用