根据中文裁减字符串函数的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 相关文章推荐
一个多文件上传的例子(原创)
Oct 09 PHP
来自phpguru得Php Cache类源码
Apr 15 PHP
PHP CURL模拟GET及POST函数代码
Apr 25 PHP
php 判断字符串中是否包含html标签
Feb 17 PHP
destoon实现调用热门关键字的方法
Jul 15 PHP
php采集内容中带有图片地址的远程图片并保存的方法
Jan 03 PHP
smarty高级特性之对象的使用方法
Dec 25 PHP
CI映射(加载)数据到view层的方法
Mar 28 PHP
thinkPHP的表达式查询用法详解
Sep 14 PHP
php实用代码片段整理
Nov 12 PHP
PHP通过bypass disable functions执行系统命令的方法汇总
May 02 PHP
laravel Model 执行事务的实现
Oct 10 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
文件上传的实现
2006/10/09 PHP
PHP封装的非对称加密RSA算法示例
2018/05/28 PHP
PHP常用函数之获取汉字首字母功能示例
2019/10/21 PHP
从JavaScript的函数重名看其初始化方式
2007/03/08 Javascript
JavaScript是否可实现多线程  深入理解JavaScript定时机制
2009/12/22 Javascript
jquery jqPlot API 中文使用教程(非常强大的图表工具)
2011/08/15 Javascript
JavaScript取得键盘按下方向键是哪个的方法
2015/08/04 Javascript
JS实现不使用图片仿Windows右键菜单效果代码
2015/10/22 Javascript
基于JS实现数字+字母+中文的混合排序方法
2016/06/06 Javascript
javascript学习之json入门
2016/12/22 Javascript
详解微信小程序开发之城市选择器 城市切换
2017/01/17 Javascript
JavaScript之class继承_动力节点Java学院整理
2017/07/03 Javascript
JavaScript解析JSON数据示例
2019/07/16 Javascript
[01:14]DOTA2亚洲邀请赛小组赛赛前花絮
2017/03/27 DOTA
python抓取网页图片示例(python爬虫)
2014/04/27 Python
python利用正则表达式提取字符串
2016/12/08 Python
用python记录运行pid,并在需要时kill掉它们的实例
2017/01/16 Python
Python排序搜索基本算法之归并排序实例分析
2017/12/08 Python
使用Python的package机制如何简化utils包设计详解
2017/12/11 Python
Python中使用支持向量机SVM实践
2017/12/27 Python
Python MySQLdb 使用utf-8 编码插入中文数据问题
2018/03/13 Python
Python获取昨天、今天、明天开始、结束时间戳的方法
2018/06/01 Python
Python文件打开方式实例详解【a、a+、r+、w+区别】
2019/03/30 Python
python通过http下载文件的方法详解
2019/07/26 Python
Python 文件数据读写的具体实现
2020/01/24 Python
python 按钮点击关闭窗口的实现
2020/03/04 Python
python实现人像动漫化的示例代码
2020/05/17 Python
python:HDF和CSV存储优劣对比分析
2020/06/08 Python
PySide2出现“ImportError: DLL load failed: 找不到指定的模块”的问题及解决方法
2020/06/10 Python
详解如何使用CSS3中的结构伪类选择器和伪元素选择器
2020/01/06 HTML / CSS
澳大利亚一站式数码相机商店:CameraPro
2020/03/09 全球购物
工作迟到检讨书
2014/02/21 职场文书
新年寄语2016
2015/08/17 职场文书
从贫穷到富有,是知识技能和学习力的差别
2019/08/20 职场文书
2019新学期家长会工作计划
2019/08/21 职场文书
Go语言操作数据库及其常规操作的示例代码
2021/04/21 Golang