根据中文裁减字符串函数的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 array_multisort()函数的使用札记
Jul 03 PHP
php数据结构与算法(PHP描述) 快速排序 quick sort
Jun 21 PHP
PHP中使用crypt()实现用户身份验证的代码
Sep 05 PHP
php输出xml必须header的解决方法
Oct 17 PHP
解决ThinkPHP关闭调试模式时报错的问题汇总
Apr 22 PHP
php对数组内元素进行随机调换的方法
May 12 PHP
PHP简单实现HTTP和HTTPS跨域共享session解决办法
May 27 PHP
详解php的socket通信
Aug 11 PHP
PHP模块化安装教程
Jun 01 PHP
PHP与Java对比学习日期时间函数
Jul 03 PHP
总结一些PHP中好用但又容易忽略的小知识
Jun 02 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 is_dir() 判断给定文件名是否是一个目录
2010/05/10 PHP
浅析php与数据库代码开发规范
2013/08/08 PHP
PHP中echo和print的区别
2014/08/28 PHP
php使用Jpgraph绘制3D饼状图的方法
2015/06/10 PHP
如何利用PHP实现上传图片功能详解
2020/09/24 PHP
javascript 操作cookies及正确使用cookies的属性
2009/10/15 Javascript
火狐textarea输入法的bug的触发及解决
2013/07/24 Javascript
JavaScript改变HTML元素的样式改变CSS及元素属性
2013/11/12 Javascript
js实现带按钮的上下滚动效果
2015/05/12 Javascript
详解JavaScript基于面向对象之继承
2015/12/13 Javascript
jQuery动画效果图片轮播特效
2016/01/12 Javascript
js仿3366小游戏选字游戏
2016/04/14 Javascript
jQ处理xml文件和xml字符串的方法(详解)
2016/11/22 Javascript
jQuery实现用户信息表格的添加和删除功能
2017/09/12 jQuery
使用html+js+css 实现页面轮播图效果(实例讲解)
2017/09/21 Javascript
在vue项目中使用Nprogress.js进度条的方法
2018/01/31 Javascript
javaScript强制保留两位小数的输入数校验和小数保留问题
2018/05/09 Javascript
微信小程序实现搜索框功能及踩过的坑
2020/06/19 Javascript
vue 导出文件,携带请求头token操作
2020/09/10 Javascript
Python中用max()方法求最大值的介绍
2015/05/15 Python
python实现红包裂变算法
2016/02/16 Python
Python实现的简单模板引擎功能示例
2017/09/02 Python
python使用opencv按一定间隔截取视频帧
2018/03/06 Python
Python基于百度AI的文字识别的示例
2018/04/21 Python
python 随机打乱 图片和对应的标签方法
2018/12/14 Python
pyqt5 使用label控件实时显示时间的实例
2019/06/14 Python
Python中那些 Pythonic的写法详解
2019/07/02 Python
美国最大的网上冲印店:Shutterfly
2017/01/01 全球购物
最新自我评价范文
2013/11/16 职场文书
管理部部长岗位职责
2013/12/05 职场文书
学校消防安全制度
2014/01/30 职场文书
买卖合同协议书范本
2014/10/18 职场文书
2014年终工作总结范本
2014/12/15 职场文书
毕业实习单位意见
2015/06/04 职场文书
Python List remove()实例用法详解
2021/08/02 Python
python 闭包函数详细介绍
2022/04/19 Python