根据中文裁减字符串函数的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 array_slice函数的使用以及参数详解
Aug 30 PHP
php压缩多个CSS为一个css的代码并缓存
Apr 21 PHP
深入解析php之apc
May 15 PHP
Memcached常用命令以及使用说明详解
Jun 27 PHP
PHP实现显示照片exif信息的方法
Jul 11 PHP
php实现监控varnish缓存服务器的状态
Dec 30 PHP
PHP中isset与array_key_exists的区别实例分析
Jun 02 PHP
php PDO判断连接是否可用的实现方法
Apr 03 PHP
php实现的二叉树遍历算法示例
Jun 15 PHP
thinkphp5.0自定义验证规则使用方法
Nov 16 PHP
PHP实现基于3DES算法加密解密字符串示例
Aug 24 PHP
Ajax+PHP实现的删除数据功能示例
Feb 12 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 SQL Injection with MySQL
2011/02/27 PHP
PHP封装的字符串加密解密函数
2015/12/18 PHP
PHP数据库连接mysql与mysqli对比分析
2016/01/04 PHP
Yii框架结合sphinx,Ajax实现搜索分页功能示例
2016/10/18 PHP
Laravel框架源码解析之模型Model原理与用法解析
2020/05/14 PHP
jQuery插件 tabBox实现代码
2010/02/09 Javascript
仿中关村在线首页弹出式广告插件(jQuery版)
2012/05/03 Javascript
jquery入门——事件机制之事件中的冒泡现象示例解释
2020/09/12 Javascript
js 控制下拉菜单刷新的方法
2013/03/03 Javascript
javascript中负数算术右移、逻辑右移的奥秘探索
2013/10/17 Javascript
非常漂亮的JS+CSS图片幻灯切换特效
2013/11/20 Javascript
JS文本获得焦点清除文本文字的示例代码
2014/01/13 Javascript
实现无刷新联动例子汇总
2015/05/20 Javascript
使用Chrome浏览器调试AngularJS应用的方法
2015/06/18 Javascript
js判断手机访问或者PC的几个例子(常用于手机跳转)
2015/12/15 Javascript
JS产生随机数的几个用法详解
2016/06/22 Javascript
AngularJS表格详解及示例代码
2016/08/17 Javascript
AngularJS表格样式简单设置方法示例
2017/03/03 Javascript
jQuery实现的文字逐行向上间歇滚动效果示例
2017/09/06 jQuery
浅析JS中什么是自定义react数据验证组件
2018/10/19 Javascript
js+audio实现音乐播放器
2020/09/13 Javascript
python如何查看系统网络流量的信息
2016/09/12 Python
python3获取当前文件的上一级目录实例
2018/04/26 Python
Python实现登陆文件验证方法
2018/10/06 Python
python对象转字典的两种实现方式示例
2019/11/07 Python
Python动态声明变量赋值代码实例
2019/12/30 Python
Linux下升级安装python3.8并配置pip及yum的教程
2020/01/02 Python
Glamest意大利:女性在线奢侈品零售店
2019/04/28 全球购物
ABOUT YOU匈牙利:500个最受欢迎的时尚品牌
2019/07/19 全球购物
中秋节礼品促销方案
2014/02/02 职场文书
数学与统计学院学生个人职业生涯规划书
2014/02/10 职场文书
卫生院艾滋病宣传活动小结
2014/07/09 职场文书
房屋买卖协议样本
2014/11/16 职场文书
先进个人事迹材料
2014/12/29 职场文书
毕业生就业推荐表导师评语
2014/12/31 职场文书
python 批量压缩图片的脚本
2021/06/02 Python