根据中文裁减字符串函数的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用户指南-cookies部分
Oct 09 PHP
php学习笔记 [预定义数组(超全局数组)]
Jun 09 PHP
php 缩略图实现函数代码
Jun 23 PHP
深入掌握include_once与require_once的区别
Jun 17 PHP
ThinkPHP模板比较标签用法详解
Jun 30 PHP
php实现的发送带附件邮件类实例
Sep 22 PHP
在SAE上搭建最新wordpress的方法
Dec 21 PHP
php操作memcache缓存方法分享
Jun 03 PHP
php生成动态验证码gif图片
Oct 19 PHP
WordPress主题中添加文章列表页页码导航的PHP代码实例
Dec 22 PHP
PHP简单遍历对象示例
Sep 28 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 REMOTE_ADDR之获取访客IP的代码
2008/04/22 PHP
如何使用PHP实现javascript的escape和unescape函数
2013/06/29 PHP
ThinkPHP实现登录退出功能
2017/06/29 PHP
Prototype String对象 学习
2009/07/19 Javascript
基于NodeJS的前后端分离的思考与实践(三)轻量级的接口配置建模框架
2014/09/26 NodeJs
js设置document.domain实现跨域的注意点分析
2015/05/21 Javascript
JSON相关知识汇总
2015/07/03 Javascript
JS实现表单中checkbox对勾选中增加边框显示效果
2015/08/21 Javascript
Jquery表单验证失败后不提交的解决方法
2016/10/18 Javascript
JS实现滑动门效果的方法详解
2016/12/19 Javascript
JavaScript仿支付宝6位数字密码输入框
2016/12/29 Javascript
jQuery插件FusionCharts绘制的3D双柱状图效果示例【附demo源码】
2017/04/20 jQuery
form表单序列化详解(推荐)
2017/08/15 Javascript
javascript基本常用排序算法解析
2017/09/27 Javascript
在create-react-app中使用css modules的示例代码
2018/07/31 Javascript
nodejs log4js 使用详解
2019/05/31 NodeJs
Python中使用partial改变方法默认参数实例
2015/04/28 Python
快速了解Python相对导入
2018/01/12 Python
python实现将一个数组逆序输出的方法
2018/06/25 Python
python 计算积分图和haar特征的实例代码
2019/11/20 Python
pytorch使用tensorboardX进行loss可视化实例
2020/02/24 Python
python json.dumps中文乱码问题解决
2020/04/01 Python
python函数中将变量名转换成字符串实例
2020/05/11 Python
Python数据可视化常用4大绘图库原理详解
2020/10/23 Python
Python爬虫爬取微博热搜保存为 Markdown 文件的源码
2021/02/22 Python
Vans(范斯)德国官网:美国南加州的原创极限运动潮牌
2017/05/02 全球购物
俄罗斯家居用品购物网站:Евродом
2020/11/21 全球购物
C语言编程题
2015/03/09 面试题
Android面试题及答案
2015/09/04 面试题
初始化了一个没有run()方法的线程类,是否会出错?
2014/03/27 面试题
经典洗发水广告词
2014/03/13 职场文书
毕业生找工作自荐书
2014/06/30 职场文书
幼儿园八一建军节活动方案
2014/08/27 职场文书
交通事故起诉书
2015/05/19 职场文书
教你用Java在个人电脑上实现微信扫码支付
2021/06/13 Java/Android
SQL Server数据库的三种创建方法汇总
2023/05/08 MySQL