根据中文裁减字符串函数的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+oracle 分页类
Oct 09 PHP
PHP 程序员的调试技术小结
Nov 15 PHP
PHP 验证码的实现代码
Jul 17 PHP
php fsockopen中多线程问题的解决办法[翻译]
Nov 09 PHP
php数组转成json格式的方法
Mar 09 PHP
一个完整的PHP类包含的七种语法说明
Jun 04 PHP
php HTML无刷新提交表单
Apr 05 PHP
用PHP写的一个冒泡排序法的函数简单实例
May 26 PHP
PHP串行化与反串行化实例分析
Dec 27 PHP
PHP实现上传多图即时显示与即时删除的方法
May 09 PHP
Laravel中日期时间处理包Carbon的简单使用
Sep 21 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
Nov 13 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
SONY ICF-SW07收音机电路分析
2021/03/02 无线电
阿拉伯的咖啡与水烟
2021/03/03 咖啡文化
php下防止单引号,双引号在接受页面转义的设置方法
2008/09/25 PHP
Yii实现多按钮保存与提交的方法
2014/12/03 PHP
Codeigniter检测表单post数据的方法
2015/03/21 PHP
php商品对比功能代码分享
2015/09/24 PHP
运用Windows XP附带的Msicuu.exe、Msizap.exe来彻底卸载顽固程序
2007/04/21 Javascript
jquery tools之tooltip
2009/07/25 Javascript
基于jquery的滚动新闻列表
2010/06/19 Javascript
js的正则test,match,exec详细解析
2014/01/29 Javascript
特殊情况下如何获取span里面的值
2014/05/20 Javascript
用JavaScript实现一个代码简洁、逻辑不复杂的多级树
2014/05/23 Javascript
在JS数组特定索引处指定位置插入元素的技巧
2014/08/24 Javascript
javascript创建cookie、读取cookie
2016/03/31 Javascript
基于BootStarp的Dailog
2016/04/28 Javascript
Centos7 中安装 Node.js v4.4.4
2016/11/03 Javascript
Node.js利用Net模块实现多人命令行聊天室的方法
2016/12/23 Javascript
AngularJS Select(选择框)使用详解
2017/01/18 Javascript
JavaScript中值类型和引用类型的区别
2017/02/23 Javascript
vue用递归组件写树形控件的实例代码
2018/07/19 Javascript
vue-cli脚手架的.babelrc文件用法说明
2020/09/11 Javascript
python清除指定目录内所有文件中script的方法
2015/06/30 Python
浅析Python中yield关键词的作用与用法
2016/11/29 Python
Python学习之Django的管理界面代码示例
2018/02/10 Python
对python 读取线的shp文件实例详解
2018/12/22 Python
Python 微信之获取好友昵称并制作wordcloud的实例
2019/02/21 Python
Python基于当前时间批量创建文件
2020/05/07 Python
动物学专业毕业生求职信
2013/10/11 职场文书
工程班组长岗位职责
2013/12/30 职场文书
小学竞选班长演讲稿
2014/09/09 职场文书
群众路线教育实践活动自我剖析思想汇报
2014/10/04 职场文书
工伤事故证明
2014/10/20 职场文书
前台岗位职责
2015/02/13 职场文书
张丽莉事迹观后感
2015/06/16 职场文书
2016年寒假学习心得体会
2015/10/09 职场文书
tensorflow中的梯度求解及梯度裁剪操作
2021/05/26 Python