根据中文裁减字符串函数的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实现文件上传二法
Oct 09 PHP
PHP程序61条面向对象分析设计的经验小结
Nov 12 PHP
Windows IIS PHP 5.2 安装与配置方法
Jun 08 PHP
Apache下禁止php文件被直接访问的解决方案
Apr 25 PHP
php中的curl_multi系列函数使用例子
Jul 29 PHP
PHP图片自动裁切应付不同尺寸的显示
Oct 16 PHP
PHP实现二叉树的深度优先与广度优先遍历方法
Sep 28 PHP
基于PHP实现短信验证码接口(容联运通讯)
Sep 06 PHP
php生出随机字符串
Jul 06 PHP
php 二维数组快速排序算法的实现代码
Oct 17 PHP
PHP标准库(PHP SPL)详解
Mar 16 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
Feb 21 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扩展vld查看PHP opcode操作步骤
2013/03/04 PHP
php版微信公众平台入门教程之开发者认证的方法
2016/09/26 PHP
PHP中单例模式的使用场景与使用方法讲解
2019/03/18 PHP
jQuery实现原理的模拟代码 -6 代码下载
2010/08/16 Javascript
基于JQuery实现鼠标点击文本框显示隐藏提示文本
2012/02/23 Javascript
jQuery语法总结和注意事项小结
2012/11/11 Javascript
5种处理js跨域问题方法汇总
2014/12/04 Javascript
jQuery插件imgPreviewQs实现上传图片预览
2016/01/15 Javascript
jQuery实现伪分页的方法分享
2016/02/17 Javascript
在页面中输出当前客户端时间javascript实例代码
2016/03/02 Javascript
AngularJS 中的指令实践开发指南(一)
2016/03/20 Javascript
JavaScript鼠标特效大全
2016/09/13 Javascript
用Angular实时获取本地Localstorage数据,实现一个模拟后台数据登入的效果
2016/11/09 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的方法
2016/11/29 Javascript
Javascript基础回顾之(一) 类型
2017/01/31 Javascript
bootstrap3 dialog 更强大、更灵活的模态框
2017/04/20 Javascript
vue-cli webpack2项目打包优化分享
2018/02/07 Javascript
angular2中使用第三方js库的实例
2018/02/26 Javascript
解决vue处理axios post请求传参的问题
2018/03/05 Javascript
基于vue2.0实现仿百度前端分页效果附实现代码
2018/10/30 Javascript
webpack项目使用eslint建立代码规范实现
2019/05/16 Javascript
javascript实现画板功能
2020/04/12 Javascript
Python 检查数组元素是否存在类似PHP isset()方法
2014/10/14 Python
Python将图片转换为字符画的方法
2020/06/16 Python
使用python无账号无限制获取企查查信息的实例代码
2020/04/17 Python
解决启动django,浏览器显示“服务器拒绝访问”的问题
2020/05/13 Python
CK美国官网:Calvin Klein
2016/08/26 全球购物
乌克兰最大的家用电器和电子产品连锁店:Eldorado
2019/10/02 全球购物
企业面试题试卷附带答案
2015/12/20 面试题
毕业生就业自荐信
2013/12/04 职场文书
高二地理教学反思
2014/01/24 职场文书
党的群众教育实践活动实施方案
2014/06/12 职场文书
中韩经贸翻译专业大学生职业生涯规划范文
2014/09/18 职场文书
交通事故赔偿协议书怎么写
2014/10/04 职场文书
群众路线自我剖析范文
2014/11/04 职场文书
钳工实训报告总结
2014/11/04 职场文书