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编程网上资源导航
Oct 09 PHP
坏狼php学习 计数器实例代码
Jun 15 PHP
PHP源码之 ext/mysql扩展部分
Jul 17 PHP
ThinkPHP有变量的where条件分页实例
Nov 03 PHP
php中get_cfg_var()和ini_get()的用法及区别
Mar 04 PHP
在Yii2中使用Pjax导致Yii2内联脚本载入失败的原因分析
Mar 06 PHP
php ajax异步读取rss文档数据
Mar 29 PHP
PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 如何解决
Apr 17 PHP
Yii隐藏URL中index.php的方法
Jul 12 PHP
PHP生成各种随机验证码的方法总结【附demo源码】
Jun 05 PHP
php数据库的增删改查 php与javascript之间的交互
Aug 31 PHP
Laravel框架执行原生SQL语句及使用paginate分页的方法
Aug 17 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 intval的测试代码发现问题
2008/07/27 PHP
PHP浮点比较大小的方法
2016/02/14 PHP
thinkPHP3.x常量整理(预定义常量/路径常量/系统常量)
2016/05/20 PHP
Yii2针对指定url的生成及图片等的引入方法小结
2016/07/18 PHP
解决Laravel 使用insert插入数据,字段created_at为0000的问题
2019/10/11 PHP
一个XML格式数据转换为图表的例子
2010/02/09 Javascript
字符串的replace方法应用浅析
2011/12/06 Javascript
JavaScript中的稀疏数组与密集数组[译]
2012/09/17 Javascript
jQuery使用$.each遍历json数组的简单实现方法
2016/04/18 Javascript
easyui combobox开启搜索自动完成功能的实例代码
2016/11/08 Javascript
JS设置手机验证码60s等待实现代码
2017/06/14 Javascript
js canvas实现适用于移动端的百分比仪表盘dashboard
2017/07/18 Javascript
详解处理bootstrap4不支持远程静态框问题
2018/07/20 Javascript
微信小程序实现上传word、txt、Excel、PPT等文件功能
2019/05/23 Javascript
了解前端理论:rscss和rsjs
2019/05/23 Javascript
js实现GIF图片的分解和合成
2019/10/24 Javascript
[27:39]Ti4 循环赛第二日 LGD vs Fnatic
2014/07/11 DOTA
[55:03]LGD vs EG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
Python 文件和输入输出小结
2013/10/09 Python
Python编写屏幕截图程序方法
2015/02/18 Python
解读Django框架中的低层次缓存API
2015/07/24 Python
pycharm新建一个python工程步骤
2019/07/16 Python
Python解析微信dat文件的方法
2020/11/30 Python
通过css3的filter滤镜改变png图片的颜色的示例代码
2020/05/06 HTML / CSS
关于HTML5+ API plusready的兼容问题
2020/11/20 HTML / CSS
西班牙著名的珠宝首饰品牌:P D PAOLA
2018/09/15 全球购物
澳大利亚领先的优质葡萄酒拍卖会:Langton’s Fine Wines
2019/03/24 全球购物
英智兴达软件测试笔试题
2016/10/12 面试题
介绍JAVA 中的Collection FrameWork(及如何写自己的数据结构)
2014/10/31 面试题
工商企业管理应届生求职信
2013/11/03 职场文书
应届毕业生求职信范文分享
2013/12/26 职场文书
中国在我心中演讲稿
2014/09/13 职场文书
学校党的群众路线教育实践活动整改措施
2014/10/25 职场文书
给老婆的道歉信
2015/01/20 职场文书
承诺函范文
2015/01/21 职场文书
2022微信温控新功能上线
2022/05/09 数码科技