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 相关文章推荐
CakePHP去除默认显示的标题及图标的方法
Oct 22 PHP
一些php项目中比较通用的php自建函数的详解
Jun 06 PHP
PHP使用Mysql事务实例解析
Sep 08 PHP
php+xml实现在线英文词典之添加词条的方法
Jan 23 PHP
php将数组转换成csv格式文件输出的方法
Mar 14 PHP
php将图片文件转换成二进制输出的方法
Jun 10 PHP
PHP实现生成唯一会员卡号
Aug 24 PHP
Docker配置PHP开发环境教程
Dec 21 PHP
深入研究PHP中的preg_replace和代码执行
Aug 15 PHP
Laravel 自动生成验证的实例讲解:login / logout
Oct 14 PHP
laravel 解决groupBy时出现的错误 isn't in Group By问题
Oct 17 PHP
PHP设计模式(三)建造者模式Builder实例详解【创建型】
May 02 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实现首页链接查询 友情链接检查的代码
2010/01/05 PHP
PHP运行出现Notice : Use of undefined constant 的完美解决方案分享
2012/03/05 PHP
本地计算机无法启动Apache故障处理
2014/08/08 PHP
ThinkPHP3.2.3框架实现执行原生SQL语句的方法示例
2019/04/03 PHP
JavaScript XML实现两级级联下拉列表
2008/11/10 Javascript
基于jQuery的图片剪切插件
2011/08/03 Javascript
火狐textarea输入法的bug的触发及解决
2013/07/24 Javascript
在JavaScript中构建ArrayList示例代码
2014/09/17 Javascript
浅谈Javascript Base64 加密解密
2014/12/28 Javascript
JavaScript基本语法讲解
2015/06/03 Javascript
js常用的继承--组合式继承
2017/03/06 Javascript
详解VUE自定义组件中用.sync修饰符与v-model的区别
2018/06/26 Javascript
详解React native fetch遇到的坑
2018/08/30 Javascript
vue加载完成后的回调函数方法
2018/09/07 Javascript
vue中组件的过渡动画及实现代码
2018/11/21 Javascript
小程序实现多列选择器
2019/02/15 Javascript
JS控制下拉列表左右选择实例代码
2020/05/08 Javascript
JS使用for in有序获取对象数据
2020/05/19 Javascript
原生js实现日期选择插件
2020/05/21 Javascript
解决Nuxt使用axios跨域问题
2020/07/06 Javascript
python列表与元组详解实例
2013/11/01 Python
Python编程生成随机用户名及密码的方法示例
2017/05/05 Python
手把手教你Python yLab的绘制折线图的画法
2019/10/23 Python
python实现的汉诺塔算法示例
2019/10/23 Python
python中Pexpect的工作流程实例讲解
2021/03/02 Python
html5 canvas绘制网络字体的常用方法
2019/08/26 HTML / CSS
Sneaker Studio法国:购买运动鞋
2018/06/08 全球购物
西安交大自主招生自荐信
2014/01/27 职场文书
经典安踏广告词
2014/03/21 职场文书
税务干部群众路线教育实践活动自我剖析材料
2014/09/21 职场文书
查摆剖析材料范文
2014/09/30 职场文书
2014年精神文明建设工作总结
2014/11/19 职场文书
超市督导岗位职责
2015/04/10 职场文书
2015年信息化建设工作总结
2015/07/23 职场文书
启迪人心的励志语录:脾气永远不要大于本事
2020/01/02 职场文书
python 进阶学习之python装饰器小结
2021/09/04 Python