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 相关文章推荐
Apache2中实现多网站域名绑定的实现方法
Jun 01 PHP
php的大小写敏感问题整理
Dec 29 PHP
php jquery 多文件上传简单实例
Dec 23 PHP
实现获取http内容的php函数分享
Feb 16 PHP
php实现无限级分类
Dec 24 PHP
Zend Framework自定义Helper类相关注意事项总结
Mar 14 PHP
基于PHP实现通过照片获取ip地址
Apr 26 PHP
thinkphp项目如何自定义微信分享描述内容
Feb 20 PHP
PHP实现在windows下配置sendmail并通过mail()函数发送邮件的方法
Jun 20 PHP
在PHP中输出JS语句以及乱码问题的解决方案
Feb 13 PHP
tp5递归 无限级分类详解
Oct 18 PHP
php多进程中的阻塞与非阻塞操作实例分析
Mar 04 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
ThinkPHP关于session的操作方法汇总
2014/07/18 PHP
yii实现级联下拉菜单的方法
2014/07/31 PHP
ThinkPHP基于PHPExcel导入Excel文件的方法
2014/10/15 PHP
CentOS下PHP安装Oracle扩展
2015/02/15 PHP
yii的入口文件index.php中为什么会有这两句
2016/08/04 PHP
php添加数据到xml文件的简单例子
2016/09/08 PHP
php连接MSsql server的五种方法总结
2018/03/04 PHP
Yii2.0 RESTful API 基础配置教程详解
2018/12/26 PHP
extjs 列表框(multiselect)的动态添加列表项的方法
2009/07/31 Javascript
通过Javascript创建一个选择文件的对话框代码
2012/06/16 Javascript
js 窗口抖动示例
2013/09/04 Javascript
Enter转换为Tab的小例子(兼容IE,Firefox)
2013/11/14 Javascript
简介JavaScript中Math.LOG10E属性的使用
2015/06/14 Javascript
JS代码防止SQL注入的方法(超简单)
2016/04/12 Javascript
基于Bootstrap使用jQuery实现输入框组input-group的添加与删除
2016/05/03 Javascript
实例讲解JavaScript中call、apply、bind方法的异同
2016/09/13 Javascript
JS实现淡入淡出图片效果的方法分析
2016/12/20 Javascript
非常优秀的JS图片轮播插件Swiper的用法
2017/01/03 Javascript
nodejs 生成和导出 word的实例代码
2018/07/31 NodeJs
JavaScript实现商品评价五星好评
2020/11/30 Javascript
[08:29]DOTA2每周TOP10 精彩击杀集锦vol.7
2014/06/25 DOTA
[06:24]DOTA2亚洲邀请赛小组赛第三日 TOP10精彩集锦
2015/02/01 DOTA
Python中__init__.py文件的作用详解
2016/09/18 Python
简单谈谈Python中的几种常见的数据类型
2017/02/10 Python
python实战教程之自动扫雷
2018/07/13 Python
python3安装speech语音模块的方法
2018/12/24 Python
Dlib+OpenCV深度学习人脸识别的方法示例
2019/05/14 Python
布隆过滤器的概述及Python实现方法
2019/12/08 Python
美国精品家居用品网站:US-Mattress
2016/08/24 全球购物
c/c++某大公司的两道笔试题
2014/02/02 面试题
法学专业应届生求职信
2013/10/16 职场文书
体育教育毕业生自荐信
2013/11/21 职场文书
应征英语教师求职信
2013/11/27 职场文书
超市开业庆典活动策划方案
2014/09/15 职场文书
2015年出纳年终工作总结
2015/05/14 职场文书
Oracle使用别名的好处
2022/04/19 Oracle