根据中文裁减字符串函数的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 相关文章推荐
PHP4之COOKIE支持详解
Oct 09 PHP
Uchome1.2 1.5 代码学习 common.php
Apr 24 PHP
php 购物车实例(申精)
May 11 PHP
php中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之间的区别
Sep 05 PHP
PHP5中虚函数的实现方法分享
Apr 20 PHP
CentOS 6.2使用yum安装LAMP以及phpMyadmin详解
Jun 17 PHP
如何使用php判断服务器是否是HTTPS连接
Jul 05 PHP
json的键名为数字时的调用方式(示例代码)
Nov 15 PHP
一个PHP的ZIP压缩类分享
May 04 PHP
PHP 实现代码复用的一个方法 traits新特性
Feb 22 PHP
php版微信js-sdk支付接口类用法示例
Oct 12 PHP
PHP读取、解析eml文件及生成网页的方法示例
Sep 04 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防止用户重复提交表单
2015/11/02 PHP
PHP页面输出时js设置input框的选中值
2016/09/30 PHP
PHP中cookie知识点学习
2018/05/06 PHP
PHP实现唤起微信支付功能
2019/02/18 PHP
JavaScript中通过闭包解决只能取得包含函数中任何变量最后一个值的问题
2010/08/12 Javascript
Extjs4 关于Store的一些操作(加载/回调/添加)
2013/04/18 Javascript
jquery验证表单中的单选与多选实例
2013/08/18 Javascript
用IE重起计算机或者关机的示例代码
2014/03/10 Javascript
javascript中声明函数的方法及调用函数的返回值
2014/07/22 Javascript
js防止页面被iframe调用的方法
2014/10/30 Javascript
JavaScript的类型、值和变量小结
2015/07/09 Javascript
javascript中对变量类型的判断方法
2015/08/09 Javascript
canvas实现简易的圆环进度条效果
2017/02/28 Javascript
Bootstrap Table使用整理(五)之分页组合查询
2017/06/09 Javascript
浅谈Vue.js 1.x 和 2.x 实例的生命周期
2017/07/25 Javascript
vue 之 .sync 修饰符示例详解
2018/04/21 Javascript
React精髓!一篇全概括小结(急速)
2019/05/23 Javascript
vue 组件之间事件触发($emit)与event Bus($on)的用法说明
2020/07/28 Javascript
vue实现简易计算器功能
2021/01/20 Vue.js
Python常见数据结构详解
2014/07/24 Python
Python获取CPU、内存使用率以及网络使用状态代码
2018/02/08 Python
windows下安装python的C扩展编译环境(解决Unable to find vcvarsall.bat)
2018/02/21 Python
pybind11在Windows下的使用教程
2019/07/04 Python
Python 实现毫秒级淘宝抢购脚本的示例代码
2019/09/16 Python
HTML如何让IMG自动适应DIV容器大小的实现方法
2020/02/25 HTML / CSS
UGG雪地靴荷兰官网:UGG荷兰
2016/09/09 全球购物
顶级宝石首饰网络零售商:Angara
2016/10/25 全球购物
台湾乐天市场:日本No.1的网路购物网站
2017/03/22 全球购物
Bogner美国官网:滑雪服中的”Dior”
2018/01/30 全球购物
德国婴儿服装和婴儿用品购买网站:Baby Sweets
2019/12/08 全球购物
医学生实习自荐信
2013/10/01 职场文书
建筑设计师岗位职责
2013/11/18 职场文书
大队委竞选演讲稿
2014/04/28 职场文书
医院节能减排方案
2014/06/13 职场文书
市委召开党的群众路线教育实践活动总结大会报告
2014/10/21 职场文书
自从在 IDEA 中用了热部署神器 JRebel 之后,开发效率提升了 10(真棒)
2021/06/26 Java/Android