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.MVC的模板标签系统(二)
Sep 05 PHP
全世界最小的php网页木马一枚 附PHP木马的防范方法
Oct 09 PHP
鸡肋的PHP单例模式应用详解
Jun 03 PHP
探讨:parse url解析URL,返回其组成部分
Jun 14 PHP
php字符串截取的简单方法
Jul 04 PHP
又十个超级有用的PHP代码片段
Sep 24 PHP
PHP数学运算函数大汇总(经典值得收藏)
Apr 01 PHP
php微信支付接口开发程序
Aug 02 PHP
解决php-fpm.service not found问题的办法
Jun 06 PHP
PHP时间戳和日期相互转换操作实例小结
Dec 18 PHP
PHP安装memcache扩展的步骤讲解
Feb 14 PHP
浅谈PHP中的那些魔术常量
Dec 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
php中的时间显示
2007/01/18 PHP
javascript 去字符串空格终极版(支持utf8)
2009/11/14 Javascript
IE JS无提示关闭窗口不提示的方法
2010/04/29 Javascript
jquery 绑定回车动作扑捉回车键触发的事件
2014/03/26 Javascript
javascript实现iframe框架延时加载的方法
2014/10/30 Javascript
jQuery插件EnPlaceholder实现输入框提示文字
2015/06/05 Javascript
js控制按钮,防止频繁点击响应的实例
2017/02/15 Javascript
通过js修改input、select默认字体颜色
2017/04/19 Javascript
jQuery实现腾讯信用界面(自制刻度尺)样式
2017/08/15 jQuery
微信小程序实现动态改变view标签宽度和高度的方法【附demo源码下载】
2017/12/05 Javascript
Vue 2.0双向绑定原理的实现方法
2019/10/23 Javascript
[02:46]2014DOTA2国际邀请赛 选手为你解读比赛MVP充满梦想
2014/07/09 DOTA
使用python装饰器验证配置文件示例
2014/02/24 Python
Python实现从百度API获取天气的方法
2015/03/11 Python
在Python web中实现验证码图片代码分享
2017/11/09 Python
Scrapy框架CrawlSpiders的介绍以及使用详解
2017/11/29 Python
Anaconda 离线安装 python 包的操作方法
2018/06/11 Python
Python动态参数/命名空间/函数嵌套/global和nonlocal
2019/05/29 Python
Django 大文件下载实现过程解析
2019/08/01 Python
利用Python校准本地时间的方法教程
2019/10/31 Python
python带参数打包exe及调用方式
2019/12/21 Python
Python绘制组合图的示例
2020/09/18 Python
python3.8动态人脸识别的实现示例
2020/09/21 Python
Python爬虫过程解析之多线程获取小米应用商店数据
2020/11/14 Python
python中re模块知识点总结
2021/01/17 Python
Html5游戏开发之乒乓Ping Pong游戏示例(二)
2013/01/21 HTML / CSS
美国珠宝网上商店:Jeulia
2016/09/01 全球购物
银行实习生自我鉴定范文
2013/09/19 职场文书
部队学习十八大感言
2014/01/11 职场文书
学校领导班子对照检查材料
2014/08/28 职场文书
课内比教学心得体会
2014/09/09 职场文书
公司党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
2015年机关党建工作总结
2015/05/22 职场文书
浅谈Python类的单继承相关知识
2021/05/12 Python
《最终幻想14》6.01版本4月5日推出 追加新任务新道具
2022/04/03 其他游戏
Java8利用Stream对列表进行去除重复的方法详解
2022/04/14 Java/Android