根据中文裁减字符串函数的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 相关文章推荐
第四节 构造函数和析构函数 [4]
Oct 09 PHP
PHP操作数组的一些函数整理介绍
Jul 17 PHP
PHP获取数组长度或某个值出现次数的方法
Feb 11 PHP
非常重要的php正则表达式详解
Jan 04 PHP
laravel创建类似ThinPHP中functions.php的全局函数
Nov 26 PHP
php mysql PDO 查询操作的实例详解
Sep 23 PHP
PHP长网址与短网址的实现方法
Oct 13 PHP
PHP 多任务秒级定时器的实现方法
May 13 PHP
详解laravel passport OAuth2.0的4种模式
Nov 04 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
Dec 01 PHP
PHP http请求超时问题解决方案
Nov 13 PHP
PHP实现爬虫爬取图片代码实例
Mar 03 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操作excel文件 基于phpexcel
2010/07/02 PHP
PHP源代码数组统计count分析
2011/08/02 PHP
destoon实现VIP排名一直在前面排序的方法
2014/08/21 PHP
WordPress自定义时间显示格式
2015/03/27 PHP
24条货真价实的PHP代码优化技巧
2016/07/28 PHP
JavaScript设置FieldSet展开与收缩
2009/05/15 Javascript
JavaScript 密码强度判断代码
2009/09/05 Javascript
JavaScript 对象模型 执行模型
2010/10/15 Javascript
jquery使用淘宝接口跨域查询手机号码归属地实例
2013/11/28 Javascript
javascript实现的弹出层背景置灰-模拟(easyui dialog)
2013/12/27 Javascript
动态加载jquery库的方法
2014/02/12 Javascript
JavaScript中实现依赖注入的思路分享
2015/01/15 Javascript
javascript动态添加删除tabs标签的方法
2015/07/06 Javascript
Javascript刷新窗口方法小结
2015/10/21 Javascript
Node.js程序中的本地文件操作用法小结
2016/03/06 Javascript
使用webpack打包koa2 框架app
2018/02/02 Javascript
VUE项目中加载已保存的笔记实例方法
2019/09/14 Javascript
JS实现的定时器展示简单秒表、页面弹框及跳转操作完整示例
2020/01/26 Javascript
CKEditor扩展插件:自动排版功能autoformat插件实现方法详解
2020/02/06 Javascript
基于vue+element实现全局loading过程详解
2020/07/10 Javascript
JS如何判断对象是否包含某个属性
2020/08/29 Javascript
Python 用户登录验证的小例子
2013/03/06 Python
tensorflow入门之训练简单的神经网络方法
2018/02/26 Python
python中pika模块问题的深入探究
2018/10/13 Python
python networkx 包绘制复杂网络关系图的实现
2019/07/10 Python
详解基于python-django框架的支付宝支付案例
2019/09/23 Python
利用keras加载训练好的.H5文件,并实现预测图片
2020/01/24 Python
python图形开发GUI库wxpython使用方法详解
2020/02/14 Python
使用Keras加载含有自定义层或函数的模型操作
2020/06/10 Python
Bluebella德国官网:英国性感内衣和睡衣品牌
2019/11/08 全球购物
写clone()方法时,通常都有一行代码,是什么?
2012/10/31 面试题
大学生职业生涯规划方案
2014/01/03 职场文书
工厂见习报告范文
2014/10/31 职场文书
校长师德表现自我评价
2015/03/04 职场文书
庆元旦主持词
2015/07/06 职场文书
解决Goland 同一个package中函数互相调用的问题
2021/05/06 Golang