根据中文裁减字符串函数的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手机号码归属地查询代码(API接口/mysql)
Sep 04 PHP
php 模拟get_headers函数的代码示例
Apr 27 PHP
php中的比较运算符详解
Oct 28 PHP
php中实现精确设置session过期时间的方法
Jul 17 PHP
浅谈PHP解析URL函数parse_url和parse_str
Nov 11 PHP
thinkphp中ajax与php响应过程详解
Dec 08 PHP
关于URL最大长度限制的相关资料查证
Dec 23 PHP
CodeIgniter配置之autoload.php自动加载用法分析
Jan 20 PHP
PHP执行linux命令常用函数汇总
Feb 02 PHP
laravel手动创建数组分页的实现代码
Jun 07 PHP
PHP读取文件,解决中文乱码UTF-8的方法分析
Jan 22 PHP
PHP设计模式(九)外观模式Facade实例详解【结构型】
May 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 Smarty模板生成html文档的方法
2010/04/12 PHP
PHP字符过滤函数去除字符串最后一个逗号(rtrim)
2013/03/26 PHP
PHP strtotime函数用法、实现原理和源码分析
2015/02/04 PHP
ThinkPHP3.2.2的插件控制器功能
2015/03/05 PHP
Windows下php+mysql5.7配置教程
2017/05/16 PHP
php-beanstalkd消息队列类实例分享
2017/07/19 PHP
JavaScript中void(0)的具体含义解释
2007/02/27 Javascript
dwr spring的集成实现代码
2009/03/22 Javascript
javascript重写alert方法的实例代码
2013/03/29 Javascript
cookie 最近浏览记录(中文escape转码)具体实现
2013/06/08 Javascript
jQuery制作拼图小游戏
2015/01/12 Javascript
JavaScript中的acos()方法使用详解
2015/06/14 Javascript
基于JS实现Android,iOS一个手势动画效果
2016/04/27 Javascript
JavaScript对象数组排序实例方法浅析
2016/06/15 Javascript
实现easyui的datagrid导出为excel的示例代码
2016/11/10 Javascript
JS实现静态页面搜索并高亮显示功能完整示例
2017/09/19 Javascript
利用HBuilder打包前端开发webapp为apk的方法
2017/11/13 Javascript
jQuery实现朋友圈查看图片
2020/09/11 jQuery
关于Vue中$refs的探索浅析
2020/11/05 Javascript
Python对多属性的重复数据去重实例
2018/04/18 Python
用于ETL的Python数据转换工具详解
2020/07/21 Python
Python爬虫之Selenium警告框(弹窗)处理
2020/12/04 Python
HTML5实现文件断点续传的方法
2017/01/04 HTML / CSS
哥伦比亚最大的网上商店:Linio哥伦比亚
2016/09/25 全球购物
艺龙旅行网酒店预订:国内、港澳台酒店
2018/06/26 全球购物
介绍一下SQL注入攻击的种类和防范手段
2012/02/18 面试题
成人高等教育毕业生自我鉴定
2013/10/22 职场文书
五一家具促销方案
2014/01/10 职场文书
迟到检讨书大全
2014/01/25 职场文书
诚信考试倡议书
2014/04/15 职场文书
讲文明懂礼貌演讲稿
2014/09/11 职场文书
交通安全横幅标语
2014/10/07 职场文书
高中生毕业评语
2014/12/30 职场文书
继承公证书格式
2015/01/26 职场文书
保险公司反洗钱宣传活动总结
2015/05/08 职场文书
新手必备Python开发环境搭建教程
2021/05/28 Python