根据中文裁减字符串函数的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 CLI实现简单的数据库实时监控调度
Jul 01 PHP
php 输出双引号&quot;与单引号'的方法
May 09 PHP
php下使用iconv需要注意的问题
Nov 20 PHP
php内核解析:PHP中的哈希表
Jan 30 PHP
php广告加载类用法实例
Sep 23 PHP
PHP实现返回JSON和XML的类分享
Jan 28 PHP
PHP curl CURLOPT_RETURNTRANSFER参数的作用使用实例
Feb 07 PHP
php计算两个日期相差天数的方法
Mar 14 PHP
使用GD库生成带阴影文字的图片
Mar 27 PHP
老生常谈php中传统验证与thinkphp框架(必看篇)
Jun 10 PHP
php二维码生成以及下载实现
Sep 28 PHP
php实现微信企业付款到个人零钱功能
Oct 09 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
磨咖啡豆的密诀
2021/03/03 冲泡冲煮
php 远程关机操作的代码
2008/12/05 PHP
php版银联支付接口开发简明教程
2016/10/14 PHP
php rmdir使用递归函数删除非空目录实例详解
2016/10/20 PHP
php使用高斯算法实现图片的模糊处理功能示例
2016/11/11 PHP
PHP实现的大文件切割与合并功能示例
2018/04/10 PHP
javascript setTimeout和setInterval 的区别
2009/12/08 Javascript
在JavaScript中实现类的方式探讨
2013/08/28 Javascript
JavaScript网页定位详解
2014/01/13 Javascript
jquery插件开发之实现md5插件
2014/03/17 Javascript
javascript获取当前鼠标坐标的方法
2015/01/10 Javascript
关于JavaScript的变量的数据类型的判断方法
2015/08/14 Javascript
JS实现方向键切换输入框焦点的方法
2015/08/19 Javascript
JS实现pasteHTML兼容ie,firefox,chrome的方法
2016/06/22 Javascript
ES6新特性六:promise对象实例详解
2017/04/21 Javascript
Webpack如何引入bootstrap的方法
2017/06/17 Javascript
JavaScript类的继承方法小结【组合继承分析】
2018/07/11 Javascript
微信小程序bindtap事件与冒泡阻止详解
2019/08/08 Javascript
Vue v-text指令简单使用方法示例
2019/09/19 Javascript
如何优雅地取消 JavaScript 异步任务
2020/03/22 Javascript
JS相册图片抖动放大展示效果的示例代码
2021/01/29 Javascript
在Python中操作时间之strptime()方法的使用
2020/12/30 Python
Python中特殊函数集锦
2015/07/27 Python
使用Python对SQLite数据库操作
2017/04/06 Python
计算pytorch标准化(Normalize)所需要数据集的均值和方差实例
2020/01/15 Python
一款纯css3实现的响应式导航
2014/10/31 HTML / CSS
探究 canvas 绘图中撤销(undo)功能的实现方式详解
2018/05/17 HTML / CSS
HTML5 Canvas自定义圆角矩形与虚线示例代码
2013/08/02 HTML / CSS
美国酒店控股公司:Choice Hotels
2018/06/15 全球购物
生产部统计员岗位职责
2014/01/05 职场文书
平民服装店创业计划书
2014/01/17 职场文书
幼儿园大班开学教师寄语
2014/04/03 职场文书
婚前财产协议书范本
2014/10/19 职场文书
项目经理岗位职责范本
2015/04/01 职场文书
爱国主义教育主题班会
2015/08/13 职场文书
高质量“欢迎词”
2019/04/03 职场文书