php摘要生成函数(无乱码)


Posted in PHP onFebruary 04, 2012

在使用的时候,得先把要生成摘要的内容strip_tags()一下,当然,你也可以把strip_tags()直接添加到函数中,我没有搞,自己添加吧。下面是函数:

function cutstr($string, $length,$charset,$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($s, chr(1)); 
if($pos !== false) { 
$strcut = substr($s,0,$pos); 
} 
return $strcut.$dot; 
}
PHP 相关文章推荐
php缓存技术介绍
Nov 25 PHP
Windows7下PHP开发环境安装配置图文方法
May 20 PHP
PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明
Dec 05 PHP
PHP gbk环境下json_dencode传送来的汉字
Nov 13 PHP
PHP获取windows登录用户名的方法
Jun 24 PHP
支持生僻字且自动识别utf-8编码的php汉字转拼音类
Jun 27 PHP
PHP反射机制用法实例
Aug 28 PHP
PHP解析目录路径的3个函数总结
Nov 18 PHP
PHP中iconv函数转码时截断字符问题的解决方法
Jan 21 PHP
php根据用户名和手机号查询是否存在手机号码
Feb 16 PHP
php中的buffer缓冲区用法分析
May 31 PHP
PHP 观察者模式深入理解与应用分析
Sep 25 PHP
写出高质量的PHP程序
Feb 04 #PHP
组合算法的PHP解答方法
Feb 04 #PHP
php处理斐波那契数列非递归方法
Feb 04 #PHP
PHP逐行输出(ob_flush与flush的组合)
Feb 04 #PHP
非常好用的两个PHP函数 serialize()和unserialize()
Feb 04 #PHP
PHP判断搜索引擎蜘蛛并自动记忆到文件的代码
Feb 04 #PHP
PHP的博客ping服务代码
Feb 04 #PHP
You might like
PHP session有效期session.gc_maxlifetime
2011/04/20 PHP
php存储过程调用实例代码
2013/02/03 PHP
php连接Access数据库错误及解决方法
2013/06/20 PHP
PHP版微信第三方实现一键登录及获取用户信息的方法
2016/10/14 PHP
php mysql_real_escape_string addslashes及mysql绑定参数防SQL注入攻击
2016/12/23 PHP
js动态加载以及确定加载完成的代码
2011/07/31 Javascript
jquery星级插件、支持页面中多次使用
2012/03/25 Javascript
JS获取浏览器版本及名称实现函数
2013/04/02 Javascript
jQuery.extend()的实现方式详解及实例
2013/06/29 Javascript
小白谈谈对JS原型链的理解
2016/05/03 Javascript
Vue.js每天必学之构造器与生命周期
2016/09/05 Javascript
详解jQuery中的事件
2016/12/14 Javascript
微信小程序联网请求的轮播图
2017/07/07 Javascript
Angularjs 手写日历的实现代码(不用插件)
2017/10/18 Javascript
解析Vue2 dist 目录下各个文件的区别
2017/11/22 Javascript
JS运动特效之完美运动框架实例分析
2018/01/24 Javascript
vue 组件的封装之基于axios的ajax请求方法
2018/08/11 Javascript
VUE实现可随意拖动的弹窗组件
2018/09/25 Javascript
有趣的JavaScript隐式类型转换操作实例分析
2020/05/02 Javascript
[01:03:51]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第三场
2018/04/09 DOTA
[42:24]完美世界DOTA2联赛循环赛 LBZS vs DM BO2第一场 11.01
2020/11/02 DOTA
python多线程http下载实现示例
2013/12/30 Python
浅谈Python的异常处理
2016/06/19 Python
使用python实现knn算法
2017/12/20 Python
python基础知识(一)变量与简单数据类型详解
2019/04/17 Python
Django框架自定义模型管理器与元选项用法分析
2019/07/22 Python
python字典的setdefault的巧妙用法
2019/08/07 Python
pycharm进入时每次都是insert模式的解决方式
2021/02/05 Python
描述内存分配方式以及它们的区别
2016/10/15 面试题
vue 中 get / delete 传递数组参数方法
2021/03/23 Vue.js
市场营销专业毕业生求职信
2014/03/26 职场文书
我读书我快乐演讲稿
2014/05/07 职场文书
团结就是力量演讲稿
2014/05/21 职场文书
深入解析NumPy中的Broadcasting广播机制
2021/05/30 Python
使用CSS3实现按钮悬停闪烁动态特效代码
2021/08/30 HTML / CSS
Java 常见的限流算法详细分析并实现
2022/04/07 Java/Android