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 全局变量范围分析
Aug 07 PHP
PHP输出XML到页面的3种方法详解
Jun 06 PHP
解析PHP留言本模块主要功能的函数说明(代码可实现)
Jun 25 PHP
php $_SERVER windows系统与linux系统下的区别说明
Feb 14 PHP
php如何解决无法上传大于8M的文件问题
Mar 10 PHP
ThinkPHP实现将本地文件打包成zip下载
Jun 26 PHP
PHP中常用的输出函数总结
Sep 22 PHP
PHP中的Session对象如何使用
Sep 25 PHP
php制作的简单验证码识别代码
Jan 26 PHP
PHP使用PDO调用mssql存储过程的方法示例
Oct 07 PHP
php实现文件上传基本验证
Mar 04 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
Feb 21 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
打造计数器DIY三步曲(下)
2006/10/09 PHP
JavaScript中令你抓狂的魔术变量
2006/11/30 Javascript
浅谈JavaScript编程语言的编码规范
2011/10/21 Javascript
jQuery中判断一个元素是否为另一个元素的子元素(或者其本身)
2012/03/21 Javascript
jquery数组过滤筛选方法grep()简介
2014/06/06 Javascript
Javascript基础教程之数据类型 (数值 Number)
2015/01/18 Javascript
JavaScript的jQuery库中ready方法的学习教程
2015/08/14 Javascript
jquery实现鼠标点击后展开列表内容的导航栏效果
2015/09/14 Javascript
jQuery查找节点方法完整实例
2016/09/13 Javascript
原生js实现类似fullpage的单页/全屏滚动
2017/01/22 Javascript
Angular2使用jQuery的方法教程
2017/05/28 jQuery
详解webpack 入门与解析
2018/04/09 Javascript
layui实现点击按钮给table添加一行
2018/08/10 Javascript
微信小程序onLaunch异步,首页onLoad先执行?
2018/09/20 Javascript
Vue中的组件及路由使用实例代码详解
2019/05/22 Javascript
Vue多环境代理配置方法思路详解
2019/06/21 Javascript
javascript中的相等操作符(==与===区别)
2019/12/21 Javascript
基于elementUI竖向表格、和并列的案例
2020/10/26 Javascript
TensorFlow在MAC环境下的安装及环境搭建
2017/11/14 Python
python中的内置函数max()和min()及mas()函数的高级用法
2018/03/29 Python
numpy下的flatten()函数用法详解
2019/05/27 Python
解决Django中修改js css文件但浏览器无法及时与之改变的问题
2019/08/31 Python
python的pip有什么用
2020/06/17 Python
Python实现打包成库供别的模块调用
2020/07/13 Python
详解Python调用系统命令的六种方法
2021/01/28 Python
HTML5之web workers_动力节点Java学院整理
2017/07/17 HTML / CSS
通过canvas转换颜色为RGBA格式及性能问题的解决
2019/11/22 HTML / CSS
《小白兔和小灰兔》教学反思
2014/02/18 职场文书
《路旁的橡树》教学反思
2014/04/07 职场文书
石油工程专业毕业生求职信
2014/04/13 职场文书
优秀学生干部个人事迹材料
2014/06/02 职场文书
2014离婚协议书范文两篇
2014/09/15 职场文书
2015年酒店年度工作总结
2015/05/23 职场文书
python区块链持久化和命令行接口实现简版
2022/05/25 Python
利用Python实现模拟登录知乎
2022/05/25 Python
基于Python编写一个监控CPU的应用系统
2022/06/25 Python