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 相关文章推荐
PHP安装攻略:常见问题解答(三)
Oct 09 PHP
php magic_quotes_gpc的一点认识与分析
Aug 18 PHP
PHP 编写大型网站问题集
May 07 PHP
php 数组使用详解 推荐
Jun 02 PHP
phpexcel导出excel的颜色和网页中的颜色显示不一致
Dec 11 PHP
深入分析使用mysql_fetch_object()以对象的形式返回查询结果
Jun 05 PHP
微信支付开发教程(一)微信支付URL配置
May 28 PHP
PHP自毁程序(慎用)
Jul 09 PHP
php通过curl添加cookie伪造登陆抓取数据的方法
Apr 02 PHP
PHP 极验验证码实例讲解
Sep 29 PHP
php pdo操作数据库示例
Mar 10 PHP
PhpStorm+xdebug+postman调试技巧分享
Sep 15 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中的正则表达式函数介绍
2012/02/27 PHP
php引用地址改变变量值的问题
2012/03/23 PHP
php实现的双向队列类实例
2014/09/24 PHP
PHP实现过滤掉非汉字字符只保留中文字符
2015/06/04 PHP
thinkPHP下的widget扩展用法实例分析
2015/12/26 PHP
PHP获取类私有属性的3种方法
2020/09/10 PHP
JS 日期验证正则附asp日期格式化函数
2009/09/11 Javascript
js获取URL的参数的方法(getQueryString)示例
2013/09/29 Javascript
js控制href内容的连接内容的变化示例
2014/04/30 Javascript
两种不同的方法实现js对checkbox进行全选和反选
2014/05/13 Javascript
js防止页面被iframe调用的方法
2014/10/30 Javascript
3种Jquery限制文本框只能输入数字字母的方法
2014/12/03 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 图片库
2015/01/09 Javascript
jQuery+AJAX实现无刷新下拉加载更多
2015/07/03 Javascript
详解Node.js中的事件机制
2016/09/22 Javascript
Javascript面试经典套路reduce函数查重
2017/03/23 Javascript
200行代码实现blockchain 区块链实例详解
2018/03/14 Javascript
JavaScript作用域、闭包、对象与原型链概念及用法实例总结
2018/08/20 Javascript
微信小程序有旋转动画效果的音乐组件实例代码
2018/08/22 Javascript
Node.js Windows Binary二进制文件安装方法
2019/05/16 Javascript
js console.log打印对象时属性缺失的解决方法
2019/05/23 Javascript
Vue多环境代理配置方法思路详解
2019/06/21 Javascript
[33:42]LGD vs OG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[01:19:46]EG vs Secret 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
使用python获取(宜宾市地震信息)地震信息
2019/06/20 Python
2020新版本pycharm+anaconda+opencv+pyqt环境配置学习笔记,亲测可用
2020/03/24 Python
快速了解Python开发环境Spyder
2020/06/29 Python
美国男士西装打折店:Jos. A. Bank
2017/11/13 全球购物
goodhealth官方海外旗舰店:新西兰国民营养师
2017/12/15 全球购物
什么是网络协议
2016/04/07 面试题
岗位聘任书范文
2014/03/29 职场文书
高中生家长寄语大全
2014/04/03 职场文书
森林防火宣传标语
2014/06/27 职场文书
工作计划范文之财务管理
2019/08/09 职场文书
送给自己的励志语句:要安静的优秀,悄无声息的坚强
2019/11/26 职场文书
Python pandas之求和运算和非空值个数统计
2021/08/07 Python