smarty中改进truncate使其支持中文的方法


Posted in PHP onMay 30, 2016

本文实例讲述了smarty中改进truncate使其支持中文的方法。分享给大家供大家参考,具体如下:

smarty的truncate不支持中文的截取。将smarty目录下plugins中的modifier.truncate.php改成下面这个样子就可以了

<?php
/*
* Smarty plugin
* -------------------------------------------------------------
* Type:   modifier
* Name:   truncate
* Purpose: Truncate a string to a certain length if necessary,
*      optionally splitting in the middle of a word, and 
*      appending the $etc string.
* Update:  change substr to msubstr and add fun msubstr.so it
*      can bu used in chinese charset.
* -------------------------------------------------------------
*/
function smarty_modifier_truncate($string, $length = 80, $etc = '...', $break_words = false)
{
  if ($length == 0)
    return '';
  if (strlen($string) > $length) {
    $length -= strlen($etc);
    if (!$break_words)
      $string = preg_replace('//s+?(/S+)?$/', '', SubstrGB($string, 0, $length+1));
    return SubstrGB($string, 0, $length).$etc;
  } else
    return $string;
}
function SubstrGB($str,$start,$len){
  for($i=0;$i<$start+$len;$i++){
    $tmpstr=(ord($str[$i])>=161 && ord($str[$i])<=254&& ord($str[$i+1])>=161 && ord($str[$i+1])<=254)?$str[$i].$str[++$i]:$tmpstr=$str[$i];
    if ($i>=$start&&$i<($start+$len))$tmp .=$tmpstr;
  }
  return $tmp;
}
/* vim: set expandtab: */
?>

希望本文所述对大家基于smarty模板的PHP程序设计有所帮助。

PHP 相关文章推荐
怎样在UNIX系统下安装MySQL
Oct 09 PHP
同一空间绑定多个域名而实现访问不同页面的PHP代码
Dec 06 PHP
免费手机号码归属地API查询接口和PHP使用实例分享
Apr 10 PHP
一个图片地址分解程序(用于PHP小偷程序)
Aug 23 PHP
php实现的SESSION类
Dec 02 PHP
php生成随机颜色方法汇总
Dec 03 PHP
6个超实用的PHP代码片段
Aug 10 PHP
搭建Vim为自定义的PHP开发工具的一些技巧
Dec 11 PHP
Yii框架结合sphinx,Ajax实现搜索分页功能示例
Oct 18 PHP
PHP实现批量清空删除指定文件夹所有内容的方法
May 30 PHP
Yii框架模拟组件调用注入示例
Nov 11 PHP
php修改word的实例方法
Nov 17 PHP
php实现的一段简单概率相关代码
May 30 #PHP
PHP中的表达式简述
May 29 #PHP
一个简单的php路由类
May 29 #PHP
解读PHP中上传文件的处理问题
May 29 #PHP
round robin权重轮循算法php实现代码
May 28 #PHP
php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8示例
May 28 #PHP
php获取一定范围内取N个不重复的随机数
May 28 #PHP
You might like
解析php二分法查找数组是否包含某一元素
2013/05/23 PHP
ThinkPHP访问不存在的模块跳转到404页面的方法
2014/06/19 PHP
js 实现无缝滚动 兼容IE和FF
2009/07/15 Javascript
非常漂亮的相册集 使用jquery制作相册集
2016/04/28 Javascript
温习Javascript基础语法之词法结构
2016/05/31 Javascript
AngularJS中update两次出现$promise属性无法识别的解决方法
2017/01/05 Javascript
关于vue单文件中引用路径的处理方法
2018/01/08 Javascript
解决layui前端框架 form表单,table表等内置控件不显示的问题
2018/08/19 Javascript
vue路由前进后退动画效果的实现代码
2018/12/10 Javascript
Vue使用自定义指令实现拖拽行为实例分析
2020/06/06 Javascript
浅析JavaScript 函数防抖和节流
2020/07/13 Javascript
jQuery列表动态增加和删除的实现方法
2020/11/05 jQuery
[02:54]辉夜杯主赛事第二日败者组 iG.V赛后采访
2015/12/26 DOTA
[00:32]2018DOTA2亚洲邀请赛iG出场
2018/04/03 DOTA
python改变日志(logging)存放位置的示例
2014/03/27 Python
python利用urllib和urllib2访问http的GET/POST详解
2017/09/27 Python
python实现关键词提取的示例讲解
2018/04/28 Python
朴素贝叶斯Python实例及解析
2018/11/19 Python
python将控制台输出保存至文件的方法
2019/01/07 Python
详解Python3中setuptools、Pip安装教程
2019/06/18 Python
Python如何基于smtplib发不同格式的邮件
2019/12/30 Python
python 实现单例模式的5种方法
2020/09/23 Python
CSS3教程:边框属性border的极致应用
2009/04/02 HTML / CSS
西班牙国家航空官方网站:Iberia
2017/11/16 全球购物
施华洛世奇美国官网:SWAROVSKI美国
2018/02/08 全球购物
New Balance加拿大官方网站:运动鞋和健身服装
2018/11/19 全球购物
小学教师的个人自我鉴定
2013/10/26 职场文书
违反课堂纪律检讨书
2014/01/19 职场文书
办公自动化毕业生求职信
2014/03/09 职场文书
春节联欢会策划方案
2014/05/16 职场文书
个人对照检查材料思想汇报
2014/09/26 职场文书
小学“向国旗敬礼”网上签名寄语活动总结
2014/09/27 职场文书
植树节新闻稿
2015/07/17 职场文书
2015年第31个教师节致辞
2015/07/31 职场文书
高中生综合素质评价范文
2015/08/18 职场文书
Java中常用解析工具jackson及fastjson的使用
2021/06/28 Java/Android