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+MySQL的聊天室设计
Oct 09 PHP
php代码优化及php相关问题总结
Oct 09 PHP
Windows 下的 PHP-PEAR 安装方法
Nov 20 PHP
关于php 接口问题(php接口主要也就是运用curl,curl函数)
Jul 01 PHP
PHP输出当前进程所有变量/常量/模块/函数/类的示例
Nov 07 PHP
PHP开发微信支付的代码分享
May 25 PHP
smarty内置函数{loteral}、{ldelim}和{rdelim}用法实例
Jan 22 PHP
Thinkphp事务操作实例(推荐)
Apr 01 PHP
浅谈PHP中类和对象的相关函数
Apr 26 PHP
PHP基于phpqrcode类生成二维码的方法详解
Mar 14 PHP
PHP观察者模式定义与用法实例分析
Mar 22 PHP
基于PHP的登录和注册的功能的实现
Aug 06 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
Access数据库导入Mysql的方法之一
2006/10/09 PHP
用PHP程序实现支持页面后退的两种方法
2008/06/30 PHP
PHP 全角转半角实现代码
2010/05/16 PHP
linux下为php添加curl扩展的方法
2011/07/29 PHP
laravel框架关于搜索功能的实现
2018/03/15 PHP
JS高级笔记
2011/07/13 Javascript
javascript中关于执行环境的杂谈
2011/08/14 Javascript
js实现在页面上弹出蒙板技巧简单实用
2013/04/16 Javascript
For循环中分号隔开的3部分的执行顺序探讨
2014/05/27 Javascript
jquery插件bxslider用法实例分析
2015/04/16 Javascript
被遗忘的javascript的slice() 方法
2015/04/20 Javascript
angularjs表格ng-table使用备忘录
2016/03/09 Javascript
jQuery Ajax 全局调用封装实例代码详解
2016/06/02 Javascript
jQuery中delegate()方法的用法详解
2016/10/13 Javascript
详解如何使用Vue2做服务端渲染
2017/03/29 Javascript
详谈Angular 2+ 的表单(一)之模板驱动型表单
2017/04/25 Javascript
mac上node.js环境的安装测试
2017/07/03 Javascript
elementUi vue el-radio 监听选中变化的实例代码
2019/06/28 Javascript
[02:29]大剑、皮鞭、女装,这届DOTA2勇士令状里都有
2020/07/17 DOTA
Python中的ctime()方法使用教程
2015/05/22 Python
Python 中迭代器与生成器实例详解
2017/03/29 Python
Python3视频转字符动画的实例代码
2019/08/29 Python
Python 导入文件过程图解
2019/10/15 Python
Django models文件模型变更错误解决
2020/05/11 Python
Keras实现将两个模型连接到一起
2020/05/23 Python
Keras loss函数剖析
2020/07/06 Python
Python 制作查询商品历史价格的小工具
2020/10/20 Python
利用Python过滤相似文本的简单方法示例
2021/02/03 Python
物流管理应届生求职信
2013/11/07 职场文书
学生处主任岗位职责
2013/12/01 职场文书
电力安全事故反思
2014/04/27 职场文书
初中教师业务学习材料
2014/05/12 职场文书
银行求职信范文
2014/05/26 职场文书
2015年乡镇财政工作总结
2015/05/19 职场文书
《1942》观后感
2015/06/08 职场文书
go web 预防跨站脚本的实现方式
2021/06/11 Golang