根据中文裁减字符串函数的php代码


Posted in PHP onDecember 03, 2013
define(CHARSET, 'UTF-8'); // 系统默认编码 /** 
* 根据中文裁减字符串 
* @param $string - 字符串 
* @param $length - 长度 
* @param $doc - 缩略后缀 
* @return 返回带省略号被裁减好的字符串 
*/ 
function cutstr( $string, $length, $dot = '...' ) { 
if ( strlen( $string ) <= $length ) { 
return $string; 
} 
$pre = chr( 1 ); 
$end = chr( 1 ); 
$string = str_replace( array( '&', '"', '<', '>' ), array( $pre . '&' . $end, $pre . '"' . $end, $pre . '<' . $end, $pre . '>' . $end ), $string ); 
$strcut = ''; 
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]; 
} 
} 
$strcut = str_replace( array( $pre . '&' . $end, $pre . '"' . $end, $pre . '<' . $end, $pre . '>' . $end ), array( '&', '"', '<', '>' ), $strcut ); 
$pos = strrpos( $strcut, chr( 1 ) ); 
if ( $pos !== false ) { 
$strcut = substr( $strcut, 0, $pos ); 
} 
return $strcut . $dot; 
}
PHP 相关文章推荐
php中将网址转换为超链接的函数
Sep 02 PHP
PHP连接SQLServer2005的实现方法(附ntwdblib.dll下载)
Jul 02 PHP
PHP数组传递是值传递而非引用传递概念纠正
Jan 31 PHP
浅析使用Turck-mmcache编译来加速、优化PHP代码
Jun 20 PHP
PHP代码优化的53个细节
Mar 03 PHP
destoon调用discuz论坛中带图片帖子的实现方法
Aug 21 PHP
ThinkPHP实现动态包含文件的方法
Nov 29 PHP
Zend Framework实现留言本分页功能(附demo源码下载)
Mar 22 PHP
php对接java现实加签验签的实例
Nov 25 PHP
php创建图像具体步骤
Mar 13 PHP
laravel框架学习笔记之组件化开发实现方法
Feb 01 PHP
php与阿里云短信接口接入操作案例分析
May 27 PHP
使用php检测用户当前使用的浏览器是否为IE浏览器
Dec 03 #PHP
php查找任何页面上的所有链接的方法
Dec 03 #PHP
php实现查看邮件是否已被阅读的方法
Dec 03 #PHP
php 模拟 asp.net webFrom 按钮提交事件的思路及代码
Dec 02 #PHP
php中{}大括号是什么意思
Dec 01 #PHP
使用PHP备份MySQL和网站发送到邮箱实例代码
Nov 28 #PHP
wordpress自定义url参数实现路由功能的代码示例
Nov 28 #PHP
You might like
php防止sql注入之过滤分页参数实例
2014/11/03 PHP
php生成过去100年下拉列表的方法
2015/07/20 PHP
分享一个漂亮的php验证码类
2016/09/29 PHP
php mysql实现mysql_select_db选择数据库
2016/12/30 PHP
laravel框架语言包拓展实现方法分析
2019/11/22 PHP
Javascript 函数中的参数使用分析
2010/03/27 Javascript
javascript中关于执行环境的杂谈
2011/08/14 Javascript
jquery的ajax跨域请求原理和示例
2014/05/08 Javascript
Node.js与PHP、Python的字符处理性能对比
2014/07/06 Javascript
JavaScript实现的链表数据结构实例
2015/04/02 Javascript
浅谈javascript 函数表达式和函数声明的区别
2016/01/05 Javascript
JS判断图片是否加载完成方法汇总(最新版)
2016/05/13 Javascript
全面了解JavaScirpt 的垃圾(garbage collection)回收机制
2016/07/11 Javascript
js的各种排序算法实现(总结)
2016/07/23 Javascript
基于Vue2.0的分页组件
2017/03/16 Javascript
angular.js中解决跨域问题的三种方式
2017/07/12 Javascript
node+koa实现数据mock接口的方法
2017/09/20 Javascript
Thinkphp5微信小程序获取用户信息接口的实例详解
2017/09/26 Javascript
Angularjs过滤器实现动态搜索与排序功能示例
2017/12/13 Javascript
vue.js 实现点击按钮动态添加li的方法
2018/09/07 Javascript
Vue实现微信支付功能遇到的坑
2019/06/05 Javascript
django中使用vue.js的要点总结
2019/07/07 Javascript
js通过canvas生成图片缩略图
2020/10/02 Javascript
[04:00]DOTA2解说界神雕侠侣 CJ第四天谷子现场过生日
2013/07/30 DOTA
[00:12]DAC SOLO赛卫冕冠军 VG.Paparazi灬展现SOLO技巧
2018/04/06 DOTA
Python构建图像分类识别器的方法
2019/01/12 Python
Python3中lambda表达式与函数式编程讲解
2019/01/14 Python
python引用(import)某个模块提示没找到对应模块的解决方法
2019/01/19 Python
Python高级property属性用法实例分析
2019/11/19 Python
python+selenium 简易地疫情信息自动打卡签到功能的实现代码
2020/08/22 Python
HTML5页面直接调用百度地图API获取当前位置直接导航目的地的实现代码
2018/03/02 HTML / CSS
如何实现jdbc性能优化
2012/07/30 面试题
C有"按引用传递"吗
2016/09/06 面试题
函授毕业生的自我鉴定
2013/11/26 职场文书
党员培训思想汇报
2014/01/07 职场文书
教师国庆节演讲稿范文2014
2014/09/21 职场文书