根据中文裁减字符串函数的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 字符转义 注意事项
May 27 PHP
Thinkphp的volist标签嵌套循环使用教程
Jul 08 PHP
php输出金字塔的2种实现方法
Dec 16 PHP
php数组随机排序实现方法
Jun 13 PHP
php读取der格式证书乱码解决方法
Jun 22 PHP
PHP技术开发微信公众平台
Jul 22 PHP
php实现mysql数据库连接操作及用户管理
Nov 08 PHP
Zend Framework教程之Zend_Layout布局助手详解
Mar 04 PHP
Zend Framework缓存Cache用法简单实例
Mar 19 PHP
PHP 读取大文件并显示的简单实例(推荐)
Aug 12 PHP
[原创]PHP实现SQL语句格式化功能的方法
Jul 28 PHP
Laravel 自动生成验证的实例讲解:login / logout
Oct 14 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
PHP5常用函数列表(分享)
2013/06/07 PHP
thinkphp实现面包屑导航(当前位置)例子分享
2014/05/10 PHP
PHP strtotime函数用法、实现原理和源码分析
2015/02/04 PHP
基于php(Thinkphp)+jquery 实现ajax多选反选不选删除数据功能
2017/02/24 PHP
laravel框架 api自定义全局异常处理方法
2019/10/11 PHP
PHP 裁剪图片
2021/03/09 PHP
JavaScript 轻松搞定快捷留言功能 只需一行代码
2010/04/01 Javascript
10款新鲜出炉的 jQuery 插件(Ajax 插件,有幻灯片、图片画廊、菜单等)
2011/06/08 Javascript
js判断生效时间不得大于失效时间的思路及代码
2013/04/23 Javascript
jquery 3D 标签云示例代码
2014/06/12 Javascript
给js文件传参数(详解)
2014/07/13 Javascript
JS实现密码框的显示密码和隐藏密码功能示例
2016/12/26 Javascript
JS作用域深度解析
2016/12/29 Javascript
js,jq,css多方面实现简易下拉菜单功能
2017/05/13 Javascript
JS弹窗 JS弹出DIV并使整个页面背景变暗功能的实现代码
2018/04/21 Javascript
layui table 表格上添加日期控件的两种方法
2019/09/28 Javascript
[00:32]2018DOTA2亚洲邀请赛VGJ.T出场
2018/04/03 DOTA
[12:21]VICI vs TNC (BO3)
2018/06/07 DOTA
[58:35]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.22
2019/09/05 DOTA
python开发之thread实现布朗运动的方法
2015/11/11 Python
python爬虫实例详解
2018/06/19 Python
Django后台管理系统的图文使用教学
2020/01/20 Python
基于python图像处理API的使用示例
2020/04/03 Python
python如何调用php文件中的函数详解
2020/12/29 Python
html5 Canvas画图教程(3)—canvas出现1像素线条模糊不清的原因
2013/01/09 HTML / CSS
vue 中 get / delete 传递数组参数方法
2021/03/23 Vue.js
欢送退休感言
2014/02/08 职场文书
财务会计专业自荐书
2014/06/30 职场文书
我们的节日元宵活动方案
2014/08/23 职场文书
大学生见习期满自我鉴定
2014/09/13 职场文书
群众路线表态发言材料
2014/10/17 职场文书
六年级学生评语大全
2014/12/26 职场文书
2016师德师风学习心得体会
2016/01/12 职场文书
小学三年级作文之写景
2019/11/05 职场文书
python 办公自动化——基于pyqt5和openpyxl统计符合要求的名单
2021/05/25 Python
Python用any()函数检查字符串中的字母以及如何使用all()函数
2022/04/14 Python