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 相关文章推荐
Windows下IIS6/Apache2.2.4+MySQL5.2+PHP5.2.1安装配置方法
May 03 PHP
php中截取中文字符串的代码小结
Jul 17 PHP
工厂模式在Zend Framework中应用介绍
Jul 10 PHP
基于PHP编程注意事项的小结
Apr 27 PHP
从零开始学YII2框架(六)高级应用程序模板
Aug 20 PHP
PHP编译安装时常见错误解决办法
May 28 PHP
thinkPHP自动验证、自动添加及表单错误问题分析
Oct 17 PHP
Laravel 实现密码重置功能
Feb 23 PHP
PHP设计模式之原型设计模式原理与用法分析
Apr 25 PHP
php中html_entity_decode实现HTML实体转义
Jun 13 PHP
PHP安装BCMath扩展的方法
Feb 13 PHP
PHP 加密 Password Hashing API基础知识点
Mar 02 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
curl实现站外采集的方法和技巧
2014/01/31 PHP
PHP判断上传文件类型的解决办法
2015/10/20 PHP
PHP模块化安装教程
2016/06/01 PHP
php输出文字乱码的解决方法
2019/10/04 PHP
functional继承模式 摘自javascript:the good parts
2011/06/20 Javascript
js阻止默认事件与js阻止事件冒泡示例分享 js阻止冒泡事件
2014/01/27 Javascript
jQuery动画与特效详解
2015/02/01 Javascript
js控制多图左右滚动切换效果代码分享
2015/08/26 Javascript
JS实现仿QQ效果的三级竖向菜单
2015/09/25 Javascript
JavaScript实现简单获取当前网页网址的方法
2015/11/09 Javascript
JavaScript实现显示函数调用堆栈的方法
2016/04/21 Javascript
JavaScript自学笔记(必看篇)
2016/06/23 Javascript
react.js 翻页插件实例代码
2017/01/19 Javascript
微信小程序动态添加分享数据
2017/06/14 Javascript
Vue2.5通过json文件读取数据的方法
2018/02/27 Javascript
iview中Select 选择器多选校验方法
2018/03/15 Javascript
微信小程序地图导航功能实现完整源代码附效果图(推荐)
2019/04/28 Javascript
解决React在安装antd之后出现的Can't resolve './locale'问题(推荐)
2020/05/03 Javascript
vue实现分页的三种效果
2020/06/23 Javascript
[44:50]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第二局
2016/02/26 DOTA
[02:04]2020年夜魇暗潮预告片
2020/10/30 DOTA
python爬虫 使用真实浏览器打开网页的两种方法总结
2018/04/21 Python
解决Pandas的DataFrame输出截断和省略的问题
2019/02/08 Python
Python3简单实现串口通信的方法
2019/06/12 Python
python实现门限回归方式
2020/02/29 Python
python实现密码验证合格程序的思路详解
2020/06/01 Python
Python通用唯一标识符uuid模块使用案例
2020/09/10 Python
最新大学生自我评价
2013/09/24 职场文书
应用数学自荐书范文
2013/11/24 职场文书
商场主管竞聘书
2014/03/31 职场文书
公积金贷款承诺书
2015/04/30 职场文书
老公写给老婆的检讨书
2015/05/06 职场文书
班组长如何制订适合本班组的工作计划?
2019/07/10 职场文书
MySQL系列之三 基础篇
2021/07/02 MySQL
MySQL的全局锁和表级锁的具体使用
2021/08/23 MySQL
通过Python把学姐照片做成拼图游戏
2022/02/15 Python