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 相关文章推荐
PHP4中实现动态代理
Oct 09 PHP
WordPress判断用户是否登录的代码
Mar 17 PHP
用PHP提取中英文词语以及数字的首字母的方法介绍
Apr 23 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(七)
Jun 23 PHP
Laravel 5框架学习之路由、控制器和视图简介
Apr 07 PHP
PHP获取二维数组中某一列的值集合
Dec 25 PHP
php is_executable判断给定文件名是否可执行实例
Sep 26 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
Aug 30 PHP
PHP命名空间与自动加载类详解
Sep 04 PHP
PHP使用mongoclient简单操作mongodb数据库示例
Feb 08 PHP
PHP Swoole异步Redis客户端实现方法示例
Oct 24 PHP
YII2框架中actions的作用与使用方法示例
Mar 13 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异常处理使用示例
2014/02/25 PHP
PHP中大于2038年时间戳的问题处理方案
2015/03/03 PHP
php实现俄罗斯乘法实例
2015/03/07 PHP
深入理解PHP中的count函数
2016/05/31 PHP
PHP实现JS中escape与unescape的方法
2016/07/11 PHP
PHP基于MySQLI函数封装的数据库连接工具类【定义与用法】
2017/08/11 PHP
javascript编程起步(第二课)
2007/02/27 Javascript
学习YUI.Ext第七日-View&amp;JSONView Part Two-一个画室网站的案例
2007/03/10 Javascript
根据一段代码浅谈Javascript闭包
2010/12/14 Javascript
jQuery实现自定义右键菜单的树状菜单效果
2015/09/02 Javascript
JavaScript中的this到底是什么(一)
2015/12/09 Javascript
JavaScript检测原始值、引用值、属性
2016/06/20 Javascript
再次谈论Javascript中的this
2016/06/23 Javascript
js智能获取浏览器版本UA信息的方法
2016/08/08 Javascript
原生js实现秒表计时器功能
2017/02/16 Javascript
Vuejs 用$emit与$on来进行兄弟组件之间的数据传输通信
2017/02/23 Javascript
Node.js服务器开启Gzip压缩教程
2017/08/11 Javascript
关于Vue单页面骨架屏实践记录
2017/12/13 Javascript
在微信小程序中渲染HTML内容的方法示例
2018/09/28 Javascript
零基础之Node.js搭建API服务器的详解
2019/03/08 Javascript
解决vue v-for src 图片路径问题 404
2019/11/12 Javascript
angular异步验证防抖踩坑实录
2019/12/01 Javascript
JS关闭子窗口并且刷新上一个窗口的实现示例
2020/03/10 Javascript
Vue-cli打包后如何本地查看的操作
2020/09/02 Javascript
利用H5api实现时钟的绘制(javascript)
2020/09/13 Javascript
Python中的 sort 和 sorted的用法与区别
2019/08/10 Python
python实现根据文件格式分类
2019/10/31 Python
python单例设计模式实现解析
2020/01/07 Python
利用PyTorch实现VGG16教程
2020/06/24 Python
Pytorch损失函数nn.NLLLoss2d()用法说明
2020/07/07 Python
HTML5实现可缩放时钟代码
2017/08/28 HTML / CSS
质检部岗位职责
2013/11/11 职场文书
2014小学数学教师个人工作总结
2014/12/18 职场文书
20180830晚上第一届KSL半决赛 雨神vs解冻(二龙 三炮解说)
2022/04/01 星际争霸
python微信智能AI机器人实现多种支付方式
2022/04/12 Python
Apache SeaTunnel实现 非CDC数据抽取
2022/05/20 Servers