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 相关文章推荐
MYSQL数据库初学者使用指南
Nov 16 PHP
php网页后退不再出现过期
Mar 08 PHP
php checkdate、getdate等日期时间函数操作详解
Mar 11 PHP
php垃圾代码优化操作代码
Aug 05 PHP
php中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)
Sep 07 PHP
smarty模板引擎中变量及变量修饰器用法实例
Jan 22 PHP
php二维数组合并及去重复的方法
Mar 04 PHP
PHP购物车类Cart.class.php定义与用法示例
Jul 20 PHP
php 文件下载 出现下载文件内容乱码损坏的解决方法(推荐)
Nov 16 PHP
PHP判断密码强度的方法详解
May 26 PHP
PHP中数组转换为SimpleXML教程
Jan 27 PHP
Yii Framework框架开发微信公众平台示例
Apr 26 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的五种设计模式
2012/09/05 PHP
php 创建以UNIX时间戳命名的文件夹(示例代码)
2014/03/08 PHP
smarty模板引擎中内建函数if、elseif和else的使用方法
2015/01/22 PHP
PHP实现简单搜歌的方法
2015/07/28 PHP
PHP错误机制知识汇总
2016/03/24 PHP
PHP递归实现层级树状展开
2016/04/01 PHP
PHP使用token防止表单重复提交的方法
2016/04/07 PHP
ThinkPHP5 验证器的具体使用
2018/05/31 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
2020/03/27 PHP
Dom在ajax技术中的作用说明
2010/10/25 Javascript
用显卡加速,轻松把笔记本打造成取暖器的办法!
2013/04/17 Javascript
为什么要在引入的css或者js文件后面加参数的详细讲解
2013/05/03 Javascript
jquery实现人性化的有选择性禁用鼠标右键
2014/06/30 Javascript
js实现点击图片将图片地址复制到粘贴板的方法
2015/02/16 Javascript
js鼠标点击图片切换效果代码分享
2015/08/26 Javascript
Highcharts学习之坐标轴
2016/08/02 Javascript
JavaScript设计模式之模板方法模式原理与用法示例
2018/08/07 Javascript
2019 年编写现代 JavaScript 代码的5个小技巧(小结)
2019/01/15 Javascript
浅谈vue3中effect与computed的亲密关系
2019/10/10 Javascript
用python做游戏的细节详解
2019/06/25 Python
django2笔记之路由path语法的实现
2019/07/17 Python
python中的反斜杠问题深入讲解
2019/08/12 Python
美国战术品牌:5.11 Tactical
2019/05/01 全球购物
Notino瑞典:购买香水和美容产品
2019/07/26 全球购物
NICKIS.com荷兰:设计师儿童时装
2020/01/08 全球购物
Shell编程面试题
2016/05/29 面试题
一年级语文教学反思
2014/02/13 职场文书
《一本男孩子必读的书》教学反思
2014/02/19 职场文书
空气环保标语
2014/06/12 职场文书
中国梦演讲稿5分钟
2014/08/19 职场文书
怎么写工作检讨书
2014/11/16 职场文书
股权投资协议书
2016/03/23 职场文书
pytorch中Schedule与warmup_steps的用法说明
2021/05/24 Python
Python pygame实现中国象棋单机版源码
2021/06/20 Python
python周期任务调度工具Schedule使用详解
2021/11/23 Python
win10双系统怎么删除一个系统?win10电脑有两个系统删除一个的操作方法
2022/07/15 数码科技